This file is indexed.

/usr/share/doc/opencl-clhpp-headers/html/cl2_8hpp_source.html is in opencl-clhpp-headers-doc 2.0.10+git12-g5dd8bb9-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>OpenCL C++ Bindings: cl2.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">OpenCL C++ Bindings
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('cl2_8hpp_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">cl2.hpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="cl2_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*******************************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Copyright (c) 2008-2016 The Khronos Group Inc.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * copy of this software and/or associated documentation files (the</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * &quot;Materials&quot;), to deal in the Materials without restriction, including</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * without limitation the rights to use, copy, modify, merge, publish,</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * distribute, sublicense, and/or sell copies of the Materials, and to</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> * permit persons to whom the Materials are furnished to do so, subject to</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * the following conditions:</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * in all copies or substantial portions of the Materials.</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> *    https://www.khronos.org/registry/</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> * THE MATERIALS ARE PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;<span class="preprocessor">#ifndef CL_HPP_</span></div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;<span class="preprocessor">#define CL_HPP_</span></div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;<span class="comment">/* Handle deprecated preprocessor definitions. In each case, we only check for</span></div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;<span class="comment"> * the old name if the new name is not defined, so that user code can define</span></div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;<span class="comment"> * both and hence work with either version of the bindings.</span></div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_USE_DX_INTEROP) &amp;&amp; defined(USE_DX_INTEROP)</span></div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead&quot;)</span></div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;<span class="preprocessor"># define CL_HPP_USE_DX_INTEROP</span></div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_USE_CL_DEVICE_FISSION) &amp;&amp; defined(USE_CL_DEVICE_FISSION)</span></div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead&quot;)</span></div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;<span class="preprocessor"># define CL_HPP_USE_CL_DEVICE_FISSION</span></div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_ENABLE_EXCEPTIONS) &amp;&amp; defined(__CL_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead&quot;)</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;<span class="preprocessor"># define CL_HPP_ENABLE_EXCEPTIONS</span></div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_NO_STD_VECTOR) &amp;&amp; defined(__NO_STD_VECTOR)</span></div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead&quot;)</span></div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;<span class="preprocessor"># define CL_HPP_NO_STD_VECTOR</span></div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_NO_STD_STRING) &amp;&amp; defined(__NO_STD_STRING)</span></div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead&quot;)</span></div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;<span class="preprocessor"># define CL_HPP_NO_STD_STRING</span></div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;<span class="preprocessor">#if defined(VECTOR_CLASS)</span></div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead&quot;)</span></div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;<span class="preprocessor">#if defined(STRING_CLASS)</span></div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: STRING_CLASS is deprecated. Alias cl::string instead.&quot;)</span></div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) &amp;&amp; defined(__CL_USER_OVERRIDE_ERROR_STRINGS)</span></div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead&quot;)</span></div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;<span class="preprocessor"># define CL_HPP_USER_OVERRIDE_ERROR_STRINGS</span></div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;<span class="comment">/* Warn about features that are no longer supported</span></div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;<span class="preprocessor">#if defined(__USE_DEV_VECTOR)</span></div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors&quot;)</span></div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;<span class="preprocessor">#if defined(__USE_DEV_STRING)</span></div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors&quot;)</span></div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;<span class="comment">/* Detect which version to target */</span></div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_TARGET_OPENCL_VERSION)</span></div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 200 (OpenCL 2.0)&quot;)</span></div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;<span class="preprocessor"># define CL_HPP_TARGET_OPENCL_VERSION 200</span></div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION != 100 &amp;&amp; CL_HPP_TARGET_OPENCL_VERSION != 110 &amp;&amp; CL_HPP_TARGET_OPENCL_VERSION != 120 &amp;&amp; CL_HPP_TARGET_OPENCL_VERSION != 200</span></div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 200&quot;)</span></div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;<span class="preprocessor"># undef CL_HPP_TARGET_OPENCL_VERSION</span></div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;<span class="preprocessor"># define CL_HPP_TARGET_OPENCL_VERSION 200</span></div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_MINIMUM_OPENCL_VERSION)</span></div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;<span class="preprocessor"># define CL_HPP_MINIMUM_OPENCL_VERSION 200</span></div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION != 110 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION != 120 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION != 200</span></div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;<span class="preprocessor"># pragma message(&quot;cl2.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 100&quot;)</span></div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;<span class="preprocessor"># undef CL_HPP_MINIMUM_OPENCL_VERSION</span></div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;<span class="preprocessor"># define CL_HPP_MINIMUM_OPENCL_VERSION 100</span></div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &gt; CL_HPP_TARGET_OPENCL_VERSION</span></div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;<span class="preprocessor"># error &quot;CL_HPP_MINIMUM_OPENCL_VERSION must not be greater than CL_HPP_TARGET_OPENCL_VERSION&quot;</span></div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt;= 100 &amp;&amp; !defined(CL_USE_DEPRECATED_OPENCL_1_0_APIS)</span></div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;<span class="preprocessor"># define CL_USE_DEPRECATED_OPENCL_1_0_APIS</span></div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt;= 110 &amp;&amp; !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)</span></div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;<span class="preprocessor"># define CL_USE_DEPRECATED_OPENCL_1_1_APIS</span></div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt;= 120 &amp;&amp; !defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS)</span></div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;<span class="preprocessor"># define CL_USE_DEPRECATED_OPENCL_1_2_APIS</span></div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt;= 200 &amp;&amp; !defined(CL_USE_DEPRECATED_OPENCL_2_0_APIS)</span></div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;<span class="preprocessor"># define CL_USE_DEPRECATED_OPENCL_2_0_APIS</span></div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;<span class="preprocessor">#include &lt;malloc.h&gt;</span></div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;<span class="preprocessor">#if defined(CL_HPP_USE_DX_INTEROP)</span></div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;<span class="preprocessor">#include &lt;CL/cl_d3d10.h&gt;</span></div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;<span class="preprocessor">#include &lt;CL/cl_dx9_media_sharing.h&gt;</span></div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;<span class="preprocessor">#endif // _WIN32</span></div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;<span class="preprocessor">#if defined(_MSC_VER)</span></div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;<span class="preprocessor">#include &lt;intrin.h&gt;</span></div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;<span class="preprocessor">#endif // _MSC_VER </span></div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160; </div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160; <span class="comment">// Check for a valid C++ version</span></div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;<span class="comment">// Need to do both tests here because for some reason __cplusplus is not </span></div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;<span class="comment">// updated in visual studio</span></div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;<span class="preprocessor">#if (!defined(_MSC_VER) &amp;&amp; __cplusplus &lt; 201103L) || (defined(_MSC_VER) &amp;&amp; _MSC_VER &lt; 1700)</span></div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;<span class="preprocessor">#error Visual studio 2013 or another C++11-supporting compiler required</span></div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;<span class="preprocessor">#if defined(CL_HPP_USE_CL_DEVICE_FISSION) || defined(CL_HPP_USE_CL_SUB_GROUPS_KHR)</span></div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;<span class="preprocessor">#include &lt;CL/cl_ext.h&gt;</span></div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;<span class="preprocessor">#if defined(__APPLE__) || defined(__MACOSX)</span></div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;<span class="preprocessor">#include &lt;OpenCL/opencl.h&gt;</span></div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;<span class="preprocessor">#include &lt;CL/opencl.h&gt;</span></div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;<span class="preprocessor">#endif // !__APPLE__</span></div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;<span class="preprocessor">#if (__cplusplus &gt;= 201103L)</span></div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;<span class="preprocessor">#define CL_HPP_NOEXCEPT_ noexcept</span></div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;<span class="preprocessor">#define CL_HPP_NOEXCEPT_</span></div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;<span class="preprocessor">#if defined(_MSC_VER)</span></div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;<span class="preprocessor"># define CL_HPP_DEFINE_STATIC_MEMBER_ __declspec(selectany)</span></div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;<span class="preprocessor"># define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak))</span></div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;<span class="preprocessor">#endif // !_MSC_VER</span></div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;<span class="comment">// Define deprecated prefixes and suffixes to ensure compilation</span></div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;<span class="comment">// in case they are not pre-defined</span></div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;<span class="preprocessor">#if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED)</span></div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;<span class="preprocessor">#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED  </span></div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED)</span></div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;<span class="preprocessor">#if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED)</span></div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;<span class="preprocessor">#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED</span></div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED)</span></div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;<span class="preprocessor">#if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED)</span></div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;<span class="preprocessor">#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED  </span></div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED)</span></div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;<span class="preprocessor">#if !defined(CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED)</span></div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;<span class="preprocessor">#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED</span></div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED)</span></div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;<span class="preprocessor">#if !defined(CL_CALLBACK)</span></div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;<span class="preprocessor">#define CL_CALLBACK</span></div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;<span class="preprocessor">#endif //CL_CALLBACK</span></div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span></div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;<span class="preprocessor">#include &lt;mutex&gt;</span></div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span></div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;<span class="comment">// Define a size_type to represent a correctly resolved size_t</span></div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY)</span></div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecl.html">cl</a> {</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;    <span class="keyword">using</span> size_type = ::size_t;</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;} <span class="comment">// namespace cl</span></div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;<span class="preprocessor">#else // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY)</span></div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="namespacecl.html">  555</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecl.html">cl</a> {</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;    <span class="keyword">using</span> size_type = size_t;</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;} <span class="comment">// namespace cl</span></div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;<span class="preprocessor">#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY)</span></div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;<span class="preprocessor">#include &lt;exception&gt;</span></div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;<span class="preprocessor">#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_NO_STD_VECTOR)</span></div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecl.html">cl</a> {</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    <span class="keyword">template</span> &lt; <span class="keyword">class</span> T, <span class="keyword">class</span> Alloc = std::allocator&lt;T&gt; &gt;</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;    <span class="keyword">using</span> vector = std::vector&lt;T, Alloc&gt;;</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;} <span class="comment">// namespace cl</span></div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_HPP_NO_STD_VECTOR)</span></div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_NO_STD_STRING)</span></div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecl.html">cl</a> {</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;    <span class="keyword">using</span> <span class="keywordtype">string</span> = std::string;</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;} <span class="comment">// namespace cl</span></div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_HPP_NO_STD_STRING)</span></div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_NO_STD_UNIQUE_PTR)</span></div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecl.html">cl</a> {</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;    <span class="comment">// Replace unique_ptr and allocate_pointer for internal use</span></div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;    <span class="comment">// to allow user to replace them</span></div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> D&gt;</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;    <span class="keyword">using</span> pointer = std::unique_ptr&lt;T, D&gt;;</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;} <span class="comment">// namespace cl</span></div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;<span class="preprocessor">#endif </span></div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_NO_STD_ARRAY)</span></div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecl.html">cl</a> {</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;    <span class="keyword">template</span> &lt; <span class="keyword">class</span> T, <span class="keywordtype">size_t</span>ype N &gt;</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;    <span class="keyword">using</span> array = std::array&lt;T, N&gt;;</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;} <span class="comment">// namespace cl</span></div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_HPP_NO_STD_ARRAY)</span></div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;<span class="comment">// Define size_type appropriately to allow backward-compatibility</span></div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;<span class="comment">// use of the old size_t interface class</span></div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY)</span></div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecl.html">cl</a> {</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;    <span class="keyword">namespace </span>compatibility {</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;        <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> N&gt;</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;        <span class="keyword">class </span>size_t</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        {</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;        <span class="keyword">private</span>:</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;            size_type data_[N];</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;        <span class="keyword">public</span>:</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;            size_t()</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;            {</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; N; ++i) {</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;                    data_[i] = 0;</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;                }</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;            }</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;            size_t(<span class="keyword">const</span> array&lt;size_type, N&gt; &amp;rhs)</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;            {</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; N; ++i) {</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;                    data_[i] = rhs[i];</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;                }</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;            }</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;            size_type&amp; operator[](<span class="keywordtype">int</span> index)</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;            {</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;                <span class="keywordflow">return</span> data_[index];</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;            }</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;            <span class="keyword">const</span> size_type&amp; operator[](<span class="keywordtype">int</span> index)<span class="keyword"> const</span></div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;<span class="keyword">            </span>{</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;                <span class="keywordflow">return</span> data_[index];</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;            }</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;            <span class="keyword">operator</span> size_type* ()             { <span class="keywordflow">return</span> data_; }</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;            <span class="keyword">operator</span> <span class="keyword">const</span> size_type* () <span class="keyword">const</span> { <span class="keywordflow">return</span> data_; }</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;            <span class="keyword">operator</span> array&lt;size_type, N&gt;() <span class="keyword">const</span></div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;            {</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;                array&lt;size_type, N&gt; ret;</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; N; ++i) {</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;                    ret[i] = data_[i];</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;                }</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;                <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;            }</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;        };</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;    } <span class="comment">// namespace compatibility</span></div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;    <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> N&gt;</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;    <span class="keyword">using</span> <span class="keywordtype">size_t</span> = compatibility::size_t&lt;N&gt;;</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;} <span class="comment">// namespace cl</span></div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;<span class="preprocessor">#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY)</span></div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;<span class="comment">// Helper alias to avoid confusing the macros</span></div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecl.html">cl</a> {</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;    <span class="keyword">namespace </span>detail {</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;        <span class="keyword">using</span> size_t_array = array&lt;size_type, 3&gt;;</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;    } <span class="comment">// namespace detail</span></div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;} <span class="comment">// namespace cl</span></div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacecl.html">cl</a> {</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;    <span class="keyword">class </span><a class="code" href="classcl_1_1_memory.html">Memory</a>;</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;<span class="preprocessor">#define CL_HPP_INIT_CL_EXT_FCN_PTR_(name) \</span></div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;<span class="preprocessor">    if (!pfn_##name) {    \</span></div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;<span class="preprocessor">    pfn_##name = (PFN_##name) \</span></div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;<span class="preprocessor">    clGetExtensionFunctionAddress(#name); \</span></div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;<span class="preprocessor">    if (!pfn_##name) {    \</span></div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;<span class="preprocessor">    } \</span></div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;<span class="preprocessor">    }</span></div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;<span class="preprocessor">#define CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, name) \</span></div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;<span class="preprocessor">    if (!pfn_##name) {    \</span></div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;<span class="preprocessor">    pfn_##name = (PFN_##name) \</span></div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;<span class="preprocessor">    clGetExtensionFunctionAddressForPlatform(platform, #name); \</span></div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;<span class="preprocessor">    if (!pfn_##name) {    \</span></div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;<span class="preprocessor">    } \</span></div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;<span class="preprocessor">    }</span></div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;    <span class="keyword">class </span><a class="code" href="classcl_1_1_program.html">Program</a>;</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;    <span class="keyword">class </span><a class="code" href="classcl_1_1_device.html">Device</a>;</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;    <span class="keyword">class </span><a class="code" href="classcl_1_1_context.html">Context</a>;</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;    <span class="keyword">class </span><a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a>;</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;    <span class="keyword">class </span><a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a>;</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;    <span class="keyword">class </span><a class="code" href="classcl_1_1_memory.html">Memory</a>;</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;    <span class="keyword">class </span><a class="code" href="classcl_1_1_buffer.html">Buffer</a>;</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;    <span class="keyword">class </span><a class="code" href="classcl_1_1_pipe.html">Pipe</a>;</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;    <span class="keyword">class </span>Error : <span class="keyword">public</span> std::exception</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;    {</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;        cl_int err_;</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> * errStr_;</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;        Error(cl_int err, <span class="keyword">const</span> <span class="keywordtype">char</span> * errStr = NULL) : err_(err), errStr_(errStr)</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;        {}</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;        ~Error() <span class="keywordflow">throw</span>() {}</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;        <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * what() <span class="keyword">const</span> <span class="keywordflow">throw</span> ()</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;        {</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;            <span class="keywordflow">if</span> (errStr_ == NULL) {</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;                <span class="keywordflow">return</span> <span class="stringliteral">&quot;empty&quot;</span>;</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;            }</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;            <span class="keywordflow">else</span> {</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;                <span class="keywordflow">return</span> errStr_;</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;            }</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;        }</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;        cl_int err(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> err_; }</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;    };</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;<span class="preprocessor">#define CL_HPP_ERR_STR_(x) #x</span></div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;<span class="preprocessor">#define CL_HPP_ERR_STR_(x) NULL</span></div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;<span class="preprocessor">#endif // CL_HPP_ENABLE_EXCEPTIONS</span></div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;<span class="keyword">namespace </span>detail</div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;{</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span> cl_int errHandler (</div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;    cl_int err,</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> * errStr = NULL)</div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;{</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;    <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;        <span class="keywordflow">throw</span> Error(err, errStr);</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;    }</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;    <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;}</div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span> cl_int errHandler (cl_int err, <span class="keyword">const</span> <span class="keywordtype">char</span> * errStr = NULL)</div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;{</div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;    (void) errStr; <span class="comment">// suppress unused variable warning</span></div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;    <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;}</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;<span class="preprocessor">#endif // CL_HPP_ENABLE_EXCEPTIONS</span></div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;}</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS)</span></div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;<span class="preprocessor">#define __GET_DEVICE_INFO_ERR               CL_HPP_ERR_STR_(clGetDeviceInfo)</span></div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;<span class="preprocessor">#define __GET_PLATFORM_INFO_ERR             CL_HPP_ERR_STR_(clGetPlatformInfo)</span></div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;<span class="preprocessor">#define __GET_DEVICE_IDS_ERR                CL_HPP_ERR_STR_(clGetDeviceIDs)</span></div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;<span class="preprocessor">#define __GET_PLATFORM_IDS_ERR              CL_HPP_ERR_STR_(clGetPlatformIDs)</span></div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;<span class="preprocessor">#define __GET_CONTEXT_INFO_ERR              CL_HPP_ERR_STR_(clGetContextInfo)</span></div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;<span class="preprocessor">#define __GET_EVENT_INFO_ERR                CL_HPP_ERR_STR_(clGetEventInfo)</span></div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;<span class="preprocessor">#define __GET_EVENT_PROFILE_INFO_ERR        CL_HPP_ERR_STR_(clGetEventProfileInfo)</span></div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;<span class="preprocessor">#define __GET_MEM_OBJECT_INFO_ERR           CL_HPP_ERR_STR_(clGetMemObjectInfo)</span></div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;<span class="preprocessor">#define __GET_IMAGE_INFO_ERR                CL_HPP_ERR_STR_(clGetImageInfo)</span></div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;<span class="preprocessor">#define __GET_SAMPLER_INFO_ERR              CL_HPP_ERR_STR_(clGetSamplerInfo)</span></div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;<span class="preprocessor">#define __GET_KERNEL_INFO_ERR               CL_HPP_ERR_STR_(clGetKernelInfo)</span></div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;<span class="preprocessor">#define __GET_KERNEL_ARG_INFO_ERR           CL_HPP_ERR_STR_(clGetKernelArgInfo)</span></div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;<span class="preprocessor">#define __GET_KERNEL_WORK_GROUP_INFO_ERR    CL_HPP_ERR_STR_(clGetKernelWorkGroupInfo)</span></div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;<span class="preprocessor">#define __GET_PROGRAM_INFO_ERR              CL_HPP_ERR_STR_(clGetProgramInfo)</span></div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;<span class="preprocessor">#define __GET_PROGRAM_BUILD_INFO_ERR        CL_HPP_ERR_STR_(clGetProgramBuildInfo)</span></div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;<span class="preprocessor">#define __GET_COMMAND_QUEUE_INFO_ERR        CL_HPP_ERR_STR_(clGetCommandQueueInfo)</span></div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;<span class="preprocessor">#define __CREATE_CONTEXT_ERR                CL_HPP_ERR_STR_(clCreateContext)</span></div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;<span class="preprocessor">#define __CREATE_CONTEXT_FROM_TYPE_ERR      CL_HPP_ERR_STR_(clCreateContextFromType)</span></div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;<span class="preprocessor">#define __GET_SUPPORTED_IMAGE_FORMATS_ERR   CL_HPP_ERR_STR_(clGetSupportedImageFormats)</span></div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;<span class="preprocessor">#define __CREATE_BUFFER_ERR                 CL_HPP_ERR_STR_(clCreateBuffer)</span></div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;<span class="preprocessor">#define __COPY_ERR                          CL_HPP_ERR_STR_(cl::copy)</span></div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;<span class="preprocessor">#define __CREATE_SUBBUFFER_ERR              CL_HPP_ERR_STR_(clCreateSubBuffer)</span></div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;<span class="preprocessor">#define __CREATE_GL_BUFFER_ERR              CL_HPP_ERR_STR_(clCreateFromGLBuffer)</span></div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;<span class="preprocessor">#define __CREATE_GL_RENDER_BUFFER_ERR       CL_HPP_ERR_STR_(clCreateFromGLBuffer)</span></div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;<span class="preprocessor">#define __GET_GL_OBJECT_INFO_ERR            CL_HPP_ERR_STR_(clGetGLObjectInfo)</span></div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;<span class="preprocessor">#define __CREATE_IMAGE_ERR                  CL_HPP_ERR_STR_(clCreateImage)</span></div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;<span class="preprocessor">#define __CREATE_GL_TEXTURE_ERR             CL_HPP_ERR_STR_(clCreateFromGLTexture)</span></div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;<span class="preprocessor">#define __IMAGE_DIMENSION_ERR               CL_HPP_ERR_STR_(Incorrect image dimensions)</span></div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;<span class="preprocessor">#define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR CL_HPP_ERR_STR_(clSetMemObjectDestructorCallback)</span></div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;<span class="preprocessor">#define __CREATE_USER_EVENT_ERR             CL_HPP_ERR_STR_(clCreateUserEvent)</span></div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;<span class="preprocessor">#define __SET_USER_EVENT_STATUS_ERR         CL_HPP_ERR_STR_(clSetUserEventStatus)</span></div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;<span class="preprocessor">#define __SET_EVENT_CALLBACK_ERR            CL_HPP_ERR_STR_(clSetEventCallback)</span></div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;<span class="preprocessor">#define __WAIT_FOR_EVENTS_ERR               CL_HPP_ERR_STR_(clWaitForEvents)</span></div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;<span class="preprocessor">#define __CREATE_KERNEL_ERR                 CL_HPP_ERR_STR_(clCreateKernel)</span></div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;<span class="preprocessor">#define __SET_KERNEL_ARGS_ERR               CL_HPP_ERR_STR_(clSetKernelArg)</span></div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;<span class="preprocessor">#define __CREATE_PROGRAM_WITH_SOURCE_ERR    CL_HPP_ERR_STR_(clCreateProgramWithSource)</span></div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;<span class="preprocessor">#define __CREATE_PROGRAM_WITH_BINARY_ERR    CL_HPP_ERR_STR_(clCreateProgramWithBinary)</span></div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;<span class="preprocessor">#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR    CL_HPP_ERR_STR_(clCreateProgramWithBuiltInKernels)</span></div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;<span class="preprocessor">#define __BUILD_PROGRAM_ERR                 CL_HPP_ERR_STR_(clBuildProgram)</span></div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;<span class="preprocessor">#define __COMPILE_PROGRAM_ERR               CL_HPP_ERR_STR_(clCompileProgram)</span></div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;<span class="preprocessor">#define __LINK_PROGRAM_ERR                  CL_HPP_ERR_STR_(clLinkProgram)</span></div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;<span class="preprocessor">#define __CREATE_KERNELS_IN_PROGRAM_ERR     CL_HPP_ERR_STR_(clCreateKernelsInProgram)</span></div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;<span class="preprocessor">#define __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR          CL_HPP_ERR_STR_(clCreateCommandQueueWithProperties)</span></div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;<span class="preprocessor">#define __CREATE_SAMPLER_WITH_PROPERTIES_ERR                CL_HPP_ERR_STR_(clCreateSamplerWithProperties)</span></div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;<span class="preprocessor">#define __SET_COMMAND_QUEUE_PROPERTY_ERR    CL_HPP_ERR_STR_(clSetCommandQueueProperty)</span></div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;<span class="preprocessor">#define __ENQUEUE_READ_BUFFER_ERR           CL_HPP_ERR_STR_(clEnqueueReadBuffer)</span></div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;<span class="preprocessor">#define __ENQUEUE_READ_BUFFER_RECT_ERR      CL_HPP_ERR_STR_(clEnqueueReadBufferRect)</span></div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;<span class="preprocessor">#define __ENQUEUE_WRITE_BUFFER_ERR          CL_HPP_ERR_STR_(clEnqueueWriteBuffer)</span></div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;<span class="preprocessor">#define __ENQUEUE_WRITE_BUFFER_RECT_ERR     CL_HPP_ERR_STR_(clEnqueueWriteBufferRect)</span></div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;<span class="preprocessor">#define __ENQEUE_COPY_BUFFER_ERR            CL_HPP_ERR_STR_(clEnqueueCopyBuffer)</span></div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;<span class="preprocessor">#define __ENQEUE_COPY_BUFFER_RECT_ERR       CL_HPP_ERR_STR_(clEnqueueCopyBufferRect)</span></div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;<span class="preprocessor">#define __ENQUEUE_FILL_BUFFER_ERR           CL_HPP_ERR_STR_(clEnqueueFillBuffer)</span></div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;<span class="preprocessor">#define __ENQUEUE_READ_IMAGE_ERR            CL_HPP_ERR_STR_(clEnqueueReadImage)</span></div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;<span class="preprocessor">#define __ENQUEUE_WRITE_IMAGE_ERR           CL_HPP_ERR_STR_(clEnqueueWriteImage)</span></div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;<span class="preprocessor">#define __ENQUEUE_COPY_IMAGE_ERR            CL_HPP_ERR_STR_(clEnqueueCopyImage)</span></div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;<span class="preprocessor">#define __ENQUEUE_FILL_IMAGE_ERR            CL_HPP_ERR_STR_(clEnqueueFillImage)</span></div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;<span class="preprocessor">#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR  CL_HPP_ERR_STR_(clEnqueueCopyImageToBuffer)</span></div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;<span class="preprocessor">#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR  CL_HPP_ERR_STR_(clEnqueueCopyBufferToImage)</span></div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;<span class="preprocessor">#define __ENQUEUE_MAP_BUFFER_ERR            CL_HPP_ERR_STR_(clEnqueueMapBuffer)</span></div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;<span class="preprocessor">#define __ENQUEUE_MAP_IMAGE_ERR             CL_HPP_ERR_STR_(clEnqueueMapImage)</span></div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;<span class="preprocessor">#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR      CL_HPP_ERR_STR_(clEnqueueUnMapMemObject)</span></div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;<span class="preprocessor">#define __ENQUEUE_NDRANGE_KERNEL_ERR        CL_HPP_ERR_STR_(clEnqueueNDRangeKernel)</span></div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;<span class="preprocessor">#define __ENQUEUE_NATIVE_KERNEL             CL_HPP_ERR_STR_(clEnqueueNativeKernel)</span></div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;<span class="preprocessor">#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR   CL_HPP_ERR_STR_(clEnqueueMigrateMemObjects)</span></div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;<span class="preprocessor">#define __ENQUEUE_ACQUIRE_GL_ERR            CL_HPP_ERR_STR_(clEnqueueAcquireGLObjects)</span></div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;<span class="preprocessor">#define __ENQUEUE_RELEASE_GL_ERR            CL_HPP_ERR_STR_(clEnqueueReleaseGLObjects)</span></div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;</div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;<span class="preprocessor">#define __CREATE_PIPE_ERR             CL_HPP_ERR_STR_(clCreatePipe)</span></div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;<span class="preprocessor">#define __GET_PIPE_INFO_ERR           CL_HPP_ERR_STR_(clGetPipeInfo)</span></div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;</div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;<span class="preprocessor">#define __RETAIN_ERR                        CL_HPP_ERR_STR_(Retain Object)</span></div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;<span class="preprocessor">#define __RELEASE_ERR                       CL_HPP_ERR_STR_(Release Object)</span></div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;<span class="preprocessor">#define __FLUSH_ERR                         CL_HPP_ERR_STR_(clFlush)</span></div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;<span class="preprocessor">#define __FINISH_ERR                        CL_HPP_ERR_STR_(clFinish)</span></div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;<span class="preprocessor">#define __VECTOR_CAPACITY_ERR               CL_HPP_ERR_STR_(Vector capacity error)</span></div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;</div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;<span class="preprocessor">#define __CREATE_SUB_DEVICES_ERR            CL_HPP_ERR_STR_(clCreateSubDevices)</span></div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;<span class="preprocessor">#define __CREATE_SUB_DEVICES_ERR            CL_HPP_ERR_STR_(clCreateSubDevicesEXT)</span></div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;</div><div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;<span class="preprocessor">#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)</span></div><div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;<span class="preprocessor">#define __ENQUEUE_MARKER_ERR                CL_HPP_ERR_STR_(clEnqueueMarker)</span></div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;<span class="preprocessor">#define __ENQUEUE_WAIT_FOR_EVENTS_ERR       CL_HPP_ERR_STR_(clEnqueueWaitForEvents)</span></div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;<span class="preprocessor">#define __ENQUEUE_BARRIER_ERR               CL_HPP_ERR_STR_(clEnqueueBarrier)</span></div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;<span class="preprocessor">#define __UNLOAD_COMPILER_ERR               CL_HPP_ERR_STR_(clUnloadCompiler)</span></div><div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;<span class="preprocessor">#define __CREATE_GL_TEXTURE_2D_ERR          CL_HPP_ERR_STR_(clCreateFromGLTexture2D)</span></div><div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;<span class="preprocessor">#define __CREATE_GL_TEXTURE_3D_ERR          CL_HPP_ERR_STR_(clCreateFromGLTexture3D)</span></div><div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;<span class="preprocessor">#define __CREATE_IMAGE2D_ERR                CL_HPP_ERR_STR_(clCreateImage2D)</span></div><div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;<span class="preprocessor">#define __CREATE_IMAGE3D_ERR                CL_HPP_ERR_STR_(clCreateImage3D)</span></div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;<span class="preprocessor">#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)</span></div><div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;<span class="preprocessor">#if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS)</span></div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;<span class="preprocessor">#define __CREATE_COMMAND_QUEUE_ERR          CL_HPP_ERR_STR_(clCreateCommandQueue)</span></div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;<span class="preprocessor">#define __ENQUEUE_TASK_ERR                  CL_HPP_ERR_STR_(clEnqueueTask)</span></div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;<span class="preprocessor">#define __CREATE_SAMPLER_ERR                CL_HPP_ERR_STR_(clCreateSampler)</span></div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;<span class="preprocessor">#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)</span></div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;</div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;<span class="preprocessor">#define __ENQUEUE_MARKER_WAIT_LIST_ERR                CL_HPP_ERR_STR_(clEnqueueMarkerWithWaitList)</span></div><div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;<span class="preprocessor">#define __ENQUEUE_BARRIER_WAIT_LIST_ERR               CL_HPP_ERR_STR_(clEnqueueBarrierWithWaitList)</span></div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;</div><div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;<span class="preprocessor">#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS</span></div><div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;</div><div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;</div><div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;<span class="keyword">namespace </span>detail {</div><div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;</div><div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;<span class="comment">// Generic getInfoHelper. The final parameter is used to guide overload</span></div><div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;<span class="comment">// resolution: the actual parameter passed is an int, which makes this</span></div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;<span class="comment">// a worse conversion sequence than a specialization that declares the</span></div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;<span class="comment">// parameter as an int.</span></div><div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Functor, <span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;<span class="keyword">inline</span> cl_int getInfoHelper(Functor f, cl_uint name, T* param, <span class="keywordtype">long</span>)</div><div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;{</div><div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;    <span class="keywordflow">return</span> f(name, <span class="keyword">sizeof</span>(T), param, NULL);</div><div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;}</div><div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;</div><div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;<span class="comment">// Specialized for getInfo&lt;CL_PROGRAM_BINARIES&gt;</span></div><div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;<span class="comment">// Assumes that the output vector was correctly resized on the way in</span></div><div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Func&gt;</div><div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;<span class="keyword">inline</span> cl_int getInfoHelper(Func f, cl_uint name, vector&lt;vector&lt;unsigned char&gt;&gt;* param, <span class="keywordtype">int</span>)</div><div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;{</div><div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;    <span class="keywordflow">if</span> (name != CL_PROGRAM_BINARIES) {</div><div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;        <span class="keywordflow">return</span> CL_INVALID_VALUE;</div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;    }</div><div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;    <span class="keywordflow">if</span> (param) {</div><div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;        <span class="comment">// Create array of pointers, calculate total size and pass pointer array in</span></div><div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;        size_type numBinaries = param-&gt;size();</div><div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;        vector&lt;unsigned char*&gt; binariesPointers(numBinaries);</div><div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;</div><div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;        <span class="keywordflow">for</span> (size_type i = 0; i &lt; numBinaries; ++i)</div><div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;        {</div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;            binariesPointers[i] = (*param)[i].data();</div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;        }</div><div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;</div><div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;        cl_int err = f(name, numBinaries * <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*), binariesPointers.data(), NULL);</div><div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;</div><div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;            <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;        }</div><div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;    }</div><div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;</div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;</div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;    <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;}</div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;</div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;<span class="comment">// Specialized getInfoHelper for vector params</span></div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Func, <span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;<span class="keyword">inline</span> cl_int getInfoHelper(Func f, cl_uint name, vector&lt;T&gt;* param, <span class="keywordtype">long</span>)</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;{</div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;    size_type required;</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;    cl_int err = f(name, 0, NULL, &amp;required);</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;    <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;    }</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;    <span class="keyword">const</span> size_type elements = required / <span class="keyword">sizeof</span>(T);</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;    <span class="comment">// Temporary to avoid changing param on an error</span></div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;    vector&lt;T&gt; localData(elements);</div><div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;    err = f(name, required, localData.data(), NULL);</div><div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;    <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;    }</div><div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;    <span class="keywordflow">if</span> (param) {</div><div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;        *param = std::move(localData);</div><div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;    }</div><div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;</div><div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;    <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;}</div><div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;</div><div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;<span class="comment">/* Specialization for reference-counted types. This depends on the</span></div><div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;<span class="comment"> * existence of Wrapper&lt;T&gt;::cl_type, and none of the other types having the</span></div><div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;<span class="comment"> * cl_type member. Note that simplify specifying the parameter as Wrapper&lt;T&gt;</span></div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;<span class="comment"> * does not work, because when using a derived type (e.g. Context) the generic</span></div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;<span class="comment"> * template will provide a better match.</span></div><div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Func, <span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;<span class="keyword">inline</span> cl_int getInfoHelper(</div><div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;    Func f, cl_uint name, vector&lt;T&gt;* param, <span class="keywordtype">int</span>, <span class="keyword">typename</span> T::cl_type = 0)</div><div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;{</div><div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;    size_type required;</div><div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;    cl_int err = f(name, 0, NULL, &amp;required);</div><div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;    <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;    }</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;    <span class="keyword">const</span> size_type elements = required / <span class="keyword">sizeof</span>(<span class="keyword">typename</span> T::cl_type);</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;    vector&lt;typename T::cl_type&gt; value(elements);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;    err = f(name, required, value.data(), NULL);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;    <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;    }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;    <span class="keywordflow">if</span> (param) {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;        <span class="comment">// Assign to convert CL type to T for each element</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;        param-&gt;resize(elements);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;        <span class="comment">// Assign to param, constructing with retain behaviour</span></div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;        <span class="comment">// to correctly capture each underlying CL object</span></div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;        <span class="keywordflow">for</span> (size_type i = 0; i &lt; elements; i++) {</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;            (*param)[i] = T(value[i], <span class="keyword">true</span>);</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;        }</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;    }</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;    <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;}</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;<span class="comment">// Specialized GetInfoHelper for string params</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Func&gt;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;<span class="keyword">inline</span> cl_int getInfoHelper(Func f, cl_uint name, <span class="keywordtype">string</span>* param, <span class="keywordtype">long</span>)</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;{</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;    size_type required;</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;    cl_int err = f(name, 0, NULL, &amp;required);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;    <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;    }</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;    <span class="comment">// std::string has a constant data member</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;    <span class="comment">// a char vector does not</span></div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;    <span class="keywordflow">if</span> (required &gt; 0) {</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;        vector&lt;char&gt; value(required);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;        err = f(name, required, value.data(), NULL);</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;            <span class="keywordflow">return</span> err;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;        }</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;        <span class="keywordflow">if</span> (param) {</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;            param-&gt;assign(begin(value), prev(end(value)));</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;        }</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;    }</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (param) {</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;        param-&gt;assign(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;    }</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;    <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;}</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;<span class="comment">// Specialized GetInfoHelper for clsize_t params</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Func, <span class="keywordtype">size_t</span>ype N&gt;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;<span class="keyword">inline</span> cl_int getInfoHelper(Func f, cl_uint name, array&lt;size_type, N&gt;* param, <span class="keywordtype">long</span>)</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;{</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;    size_type required;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;    cl_int err = f(name, 0, NULL, &amp;required);</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;    <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;    }</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;    size_type elements = required / <span class="keyword">sizeof</span>(size_type);</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;    vector&lt;size_type&gt; value(elements, 0);</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;    err = f(name, required, value.data(), NULL);</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;    <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;    }</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;    </div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;    <span class="comment">// Bound the copy with N to prevent overruns</span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;    <span class="comment">// if passed N &gt; than the amount copied</span></div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;    <span class="keywordflow">if</span> (elements &gt; N) {</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;        elements = N;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;    }</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;    <span class="keywordflow">for</span> (size_type i = 0; i &lt; elements; ++i) {</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;        (*param)[i] = value[i];</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;    }</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;    <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;}</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;</div><div class="line"><a name="l01080"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler.html"> 1080</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a>;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;<span class="comment">/* Specialization for reference-counted types. This depends on the</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;<span class="comment"> * existence of Wrapper&lt;T&gt;::cl_type, and none of the other types having the</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;<span class="comment"> * cl_type member. Note that simplify specifying the parameter as Wrapper&lt;T&gt;</span></div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;<span class="comment"> * does not work, because when using a derived type (e.g. Context) the generic</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;<span class="comment"> * template will provide a better match.</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Func, <span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;<span class="keyword">inline</span> cl_int getInfoHelper(Func f, cl_uint name, T* param, <span class="keywordtype">int</span>, <span class="keyword">typename</span> T::cl_type = 0)</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;{</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;    <span class="keyword">typename</span> T::cl_type value;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;    cl_int err = f(name, <span class="keyword">sizeof</span>(value), &amp;value, NULL);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;    <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;    }</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;    *param = value;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;    <span class="keywordflow">if</span> (value != NULL)</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;    {</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;        err = param-&gt;retain();</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;            <span class="keywordflow">return</span> err;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;        }</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;    }</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;    <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;}</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;<span class="preprocessor">#define CL_HPP_PARAM_NAME_INFO_1_0_(F) \</span></div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;<span class="preprocessor">    F(cl_platform_info, CL_PLATFORM_PROFILE, string) \</span></div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;<span class="preprocessor">    F(cl_platform_info, CL_PLATFORM_VERSION, string) \</span></div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;<span class="preprocessor">    F(cl_platform_info, CL_PLATFORM_NAME, string) \</span></div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;<span class="preprocessor">    F(cl_platform_info, CL_PLATFORM_VENDOR, string) \</span></div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;<span class="preprocessor">    F(cl_platform_info, CL_PLATFORM_EXTENSIONS, string) \</span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \</span></div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \</span></div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \</span></div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \</span></div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, size_type) \</span></div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, cl::vector&lt;size_type&gt;) \</span></div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \</span></div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \</span></div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \</span></div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \</span></div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \</span></div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \</span></div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \</span></div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \</span></div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \</span></div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \</span></div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \</span></div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, size_type) \</span></div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, size_type) \</span></div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, size_type) \</span></div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, size_type) \</span></div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, size_type) \</span></div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \</span></div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, size_type) \</span></div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \</span></div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \</span></div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \</span></div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \</span></div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \</span></div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\</span></div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \</span></div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \</span></div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \</span></div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \</span></div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \</span></div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \</span></div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \</span></div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, size_type) \</span></div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \</span></div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \</span></div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \</span></div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \</span></div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_NAME, string) \</span></div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_VENDOR, string) \</span></div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DRIVER_VERSION, string) \</span></div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PROFILE, string) \</span></div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_VERSION, string) \</span></div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_EXTENSIONS, string) \</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;<span class="preprocessor">    F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \</span></div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;<span class="preprocessor">    F(cl_context_info, CL_CONTEXT_DEVICES, cl::vector&lt;Device&gt;) \</span></div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;<span class="preprocessor">    F(cl_context_info, CL_CONTEXT_PROPERTIES, cl::vector&lt;cl_context_properties&gt;) \</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;<span class="preprocessor">    F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \</span></div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;<span class="preprocessor">    F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \</span></div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;<span class="preprocessor">    F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \</span></div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;<span class="preprocessor">    F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \</span></div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;<span class="preprocessor">    F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \</span></div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;<span class="preprocessor">    F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \</span></div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;<span class="preprocessor">    F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \</span></div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;<span class="preprocessor">    F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \</span></div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;<span class="preprocessor">    F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \</span></div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;<span class="preprocessor">    F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \</span></div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;<span class="preprocessor">    F(cl_mem_info, CL_MEM_SIZE, size_type) \</span></div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;<span class="preprocessor">    F(cl_mem_info, CL_MEM_HOST_PTR, void*) \</span></div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;<span class="preprocessor">    F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \</span></div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;<span class="preprocessor">    F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \</span></div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;<span class="preprocessor">    F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \</span></div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;<span class="preprocessor">    F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \</span></div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;<span class="preprocessor">    F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, size_type) \</span></div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;<span class="preprocessor">    F(cl_image_info, CL_IMAGE_ROW_PITCH, size_type) \</span></div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;<span class="preprocessor">    F(cl_image_info, CL_IMAGE_SLICE_PITCH, size_type) \</span></div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;<span class="preprocessor">    F(cl_image_info, CL_IMAGE_WIDTH, size_type) \</span></div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;<span class="preprocessor">    F(cl_image_info, CL_IMAGE_HEIGHT, size_type) \</span></div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;<span class="preprocessor">    F(cl_image_info, CL_IMAGE_DEPTH, size_type) \</span></div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;<span class="preprocessor">    F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \</span></div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;<span class="preprocessor">    F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \</span></div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;<span class="preprocessor">    F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \</span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;<span class="preprocessor">    F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \</span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;<span class="preprocessor">    F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \</span></div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;<span class="preprocessor">    F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \</span></div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<span class="preprocessor">    F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \</span></div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;<span class="preprocessor">    F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \</span></div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="preprocessor">    F(cl_program_info, CL_PROGRAM_DEVICES, cl::vector&lt;Device&gt;) \</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;<span class="preprocessor">    F(cl_program_info, CL_PROGRAM_SOURCE, string) \</span></div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;<span class="preprocessor">    F(cl_program_info, CL_PROGRAM_BINARY_SIZES, cl::vector&lt;size_type&gt;) \</span></div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;<span class="preprocessor">    F(cl_program_info, CL_PROGRAM_BINARIES, cl::vector&lt;cl::vector&lt;unsigned char&gt;&gt;) \</span></div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;<span class="preprocessor">    F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \</span></div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="preprocessor">    F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, string) \</span></div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;<span class="preprocessor">    F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, string) \</span></div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;<span class="preprocessor">    F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, string) \</span></div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;<span class="preprocessor">    F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \</span></div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;<span class="preprocessor">    F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \</span></div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;<span class="preprocessor">    F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \</span></div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;<span class="preprocessor">    F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \</span></div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;<span class="preprocessor">    F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, size_type) \</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;<span class="preprocessor">    F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::detail::size_t_array) \</span></div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;<span class="preprocessor">    F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \</span></div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;<span class="preprocessor">    F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \</span></div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;<span class="preprocessor">    F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \</span></div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;<span class="preprocessor">    F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \</span></div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;<span class="preprocessor">    F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties)</span></div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;<span class="preprocessor">#define CL_HPP_PARAM_NAME_INFO_1_1_(F) \</span></div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;<span class="preprocessor">    F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\</span></div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \</span></div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \</span></div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \</span></div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \</span></div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \</span></div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \</span></div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \</span></div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \</span></div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \</span></div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \</span></div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, string) \</span></div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;<span class="preprocessor">    F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \</span></div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;<span class="preprocessor">    F(cl_mem_info, CL_MEM_OFFSET, size_type) \</span></div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;<span class="preprocessor">    F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, size_type) \</span></div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;<span class="preprocessor">    F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \</span></div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;<span class="preprocessor">    F(cl_event_info, CL_EVENT_CONTEXT, cl::Context)</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;<span class="preprocessor">#define CL_HPP_PARAM_NAME_INFO_1_2_(F) \</span></div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;<span class="preprocessor">    F(cl_program_info, CL_PROGRAM_NUM_KERNELS, size_type) \</span></div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;<span class="preprocessor">    F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, string) \</span></div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;<span class="preprocessor">    F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \</span></div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;<span class="preprocessor">    F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, string) \</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;<span class="preprocessor">    F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \</span></div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;<span class="preprocessor">    F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \</span></div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;<span class="preprocessor">    F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, string) \</span></div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;<span class="preprocessor">    F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, string) \</span></div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;<span class="preprocessor">    F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \</span></div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl::Device) \</span></div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, cl::vector&lt;cl_device_partition_property&gt;) \</span></div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PARTITION_TYPE, cl::vector&lt;cl_device_partition_property&gt;)  \</span></div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \</span></div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, size_type) \</span></div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \</span></div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, string) \</span></div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;<span class="preprocessor">    \</span></div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;<span class="preprocessor">    F(cl_image_info, CL_IMAGE_ARRAY_SIZE, size_type) \</span></div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;<span class="preprocessor">    F(cl_image_info, CL_IMAGE_NUM_MIP_LEVELS, cl_uint) \</span></div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;<span class="preprocessor">    F(cl_image_info, CL_IMAGE_NUM_SAMPLES, cl_uint)</span></div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;<span class="preprocessor">#define CL_HPP_PARAM_NAME_INFO_2_0_(F) \</span></div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, cl_command_queue_properties) \</span></div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, cl_command_queue_properties) \</span></div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, cl_uint) \</span></div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, cl_uint) \</span></div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_QUEUES, cl_uint) \</span></div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_EVENTS, cl_uint) \</span></div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_MAX_PIPE_ARGS, cl_uint) \</span></div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, cl_uint) \</span></div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PIPE_MAX_PACKET_SIZE, cl_uint) \</span></div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_SVM_CAPABILITIES, cl_device_svm_capabilities) \</span></div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, cl_uint) \</span></div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, cl_uint) \</span></div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, cl_uint) \</span></div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="preprocessor">    F(cl_command_queue_info, CL_QUEUE_SIZE, cl_uint) \</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;<span class="preprocessor">    F(cl_mem_info, CL_MEM_USES_SVM_POINTER, cl_bool) \</span></div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;<span class="preprocessor">    F(cl_program_build_info, CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, size_type) \</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;<span class="preprocessor">    F(cl_pipe_info, CL_PIPE_PACKET_SIZE, cl_uint) \</span></div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;<span class="preprocessor">    F(cl_pipe_info, CL_PIPE_MAX_PACKETS, cl_uint)</span></div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="preprocessor">#define CL_HPP_PARAM_NAME_DEVICE_FISSION_(F) \</span></div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \</span></div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, cl::vector&lt;cl_device_partition_property_ext&gt;) \</span></div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, cl::vector&lt;cl_device_partition_property_ext&gt;) \</span></div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, cl::vector&lt;cl_device_partition_property_ext&gt;)</span></div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> enum_type, cl_<span class="keywordtype">int</span> Name&gt;</div><div class="line"><a name="l01304"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1param__traits.html"> 1304</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1param__traits.html">param_traits</a> {};</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;<span class="preprocessor">#define CL_HPP_DECLARE_PARAM_TRAITS_(token, param_name, T) \</span></div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;<span class="preprocessor">struct token;                                        \</span></div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;<span class="preprocessor">template&lt;&gt;                                           \</span></div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;<span class="preprocessor">struct param_traits&lt;detail:: token,param_name&gt;       \</span></div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;<span class="preprocessor">{                                                    \</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;<span class="preprocessor">    enum { value = param_name };                     \</span></div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;<span class="preprocessor">    typedef T param_type;                            \</span></div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;<span class="preprocessor">};</span></div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;CL_HPP_PARAM_NAME_INFO_1_0_(CL_HPP_DECLARE_PARAM_TRAITS_)</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;CL_HPP_PARAM_NAME_INFO_1_1_(CL_HPP_DECLARE_PARAM_TRAITS_)</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;CL_HPP_PARAM_NAME_INFO_1_2_(CL_HPP_DECLARE_PARAM_TRAITS_)</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;CL_HPP_PARAM_NAME_INFO_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_)</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;<span class="comment">// Flags deprecated in OpenCL 2.0</span></div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;<span class="preprocessor">#define CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(F) \</span></div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties)</span></div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;<span class="preprocessor">#define CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(F) \</span></div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;<span class="preprocessor">    F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool)</span></div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;<span class="preprocessor">#define CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(F) \</span></div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="preprocessor">    F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer)</span></div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="comment">// Include deprecated query flags based on versions</span></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;<span class="comment">// Only include deprecated 1.0 flags if 2.0 not active as there is an enum clash</span></div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt; 100 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200 &amp;&amp; CL_HPP_TARGET_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_)</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 110</span></div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt; 110 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_)</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt; 120 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_)</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;<span class="preprocessor">#if defined(CL_HPP_USE_CL_DEVICE_FISSION)</span></div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;CL_HPP_PARAM_NAME_DEVICE_FISSION_(CL_HPP_DECLARE_PARAM_TRAITS_);</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;<span class="preprocessor">#endif // CL_HPP_USE_CL_DEVICE_FISSION</span></div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;<span class="preprocessor">#ifdef CL_PLATFORM_ICD_SUFFIX_KHR</span></div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, <span class="keywordtype">string</span>)</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD</span></div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_PROFILING_TIMER_OFFSET_AMD, cl_ulong)</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_GLOBAL_FREE_MEMORY_AMD</span></div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, vector&lt;size_type&gt;)</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD</span></div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD, cl_uint)</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_SIMD_WIDTH_AMD</span></div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_WIDTH_AMD, cl_uint)</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD</span></div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD, cl_uint)</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_WAVEFRONT_WIDTH_AMD</span></div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_WAVEFRONT_WIDTH_AMD, cl_uint)</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD</span></div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD, cl_uint)</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD</span></div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD, cl_uint)</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD</span></div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD, cl_uint)</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD</span></div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD, cl_uint)</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_LOCAL_MEM_BANKS_AMD</span></div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_LOCAL_MEM_BANKS_AMD, cl_uint)</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV</span></div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV, cl_uint)</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV</span></div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV, cl_uint)</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_REGISTERS_PER_BLOCK_NV</span></div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_REGISTERS_PER_BLOCK_NV, cl_uint)</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_WARP_SIZE_NV</span></div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_WARP_SIZE_NV, cl_uint)</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_GPU_OVERLAP_NV</span></div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_GPU_OVERLAP_NV, cl_bool)</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV</span></div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV, cl_bool)</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;<span class="preprocessor">#ifdef CL_DEVICE_INTEGRATED_MEMORY_NV</span></div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_bool)</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;<span class="comment">// Convenience functions</span></div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Func, <span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;<span class="keyword">inline</span> cl_int</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;getInfo(Func f, cl_uint name, T* param)</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;{</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;    <span class="keywordflow">return</span> getInfoHelper(f, name, param, 0);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;}</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Func, <span class="keyword">typename</span> Arg0&gt;</div><div class="line"><a name="l01424"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_get_info_functor0.html"> 1424</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_get_info_functor0.html">GetInfoFunctor0</a></div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;{</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;    Func f_; <span class="keyword">const</span> Arg0&amp; arg0_;</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;    cl_int operator ()(</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;        cl_uint param, size_type size, <span class="keywordtype">void</span>* value, size_type* size_ret)</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;    { <span class="keywordflow">return</span> f_(arg0_, param, size, value, size_ret); }</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;};</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Func, <span class="keyword">typename</span> Arg0, <span class="keyword">typename</span> Arg1&gt;</div><div class="line"><a name="l01433"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_get_info_functor1.html"> 1433</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_get_info_functor1.html">GetInfoFunctor1</a></div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;{</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;    Func f_; <span class="keyword">const</span> Arg0&amp; arg0_; <span class="keyword">const</span> Arg1&amp; arg1_;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;    cl_int operator ()(</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;        cl_uint param, size_type size, <span class="keywordtype">void</span>* value, size_type* size_ret)</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;    { <span class="keywordflow">return</span> f_(arg0_, arg1_, param, size, value, size_ret); }</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;};</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Func, <span class="keyword">typename</span> Arg0, <span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;<span class="keyword">inline</span> cl_int</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;getInfo(Func f, <span class="keyword">const</span> Arg0&amp; arg0, cl_uint name, T* param)</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;{</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;    <a class="code" href="structcl_1_1detail_1_1_get_info_functor0.html">GetInfoFunctor0&lt;Func, Arg0&gt;</a> f0 = { f, arg0 };</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;    <span class="keywordflow">return</span> getInfoHelper(f0, name, param, 0);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;}</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Func, <span class="keyword">typename</span> Arg0, <span class="keyword">typename</span> Arg1, <span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;<span class="keyword">inline</span> cl_int</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;getInfo(Func f, <span class="keyword">const</span> Arg0&amp; arg0, <span class="keyword">const</span> Arg1&amp; arg1, cl_uint name, T* param)</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;{</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;    <a class="code" href="structcl_1_1detail_1_1_get_info_functor1.html">GetInfoFunctor1&lt;Func, Arg0, Arg1&gt;</a> f0 = { f, arg0, arg1 };</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;    <span class="keywordflow">return</span> getInfoHelper(f0, name, param, 0);</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;}</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a></div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;{ };</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l01467"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler_3_01cl__device__id_01_4.html"> 1467</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a>&lt;cl_device_id&gt;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;{</div><div class="line"><a name="l01478"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler_3_01cl__device__id_01_4.html#ae3392ce2c4055446680bde82e60c976c"> 1478</a></span>&#160;    <span class="keyword">static</span> cl_int <a class="code" href="structcl_1_1detail_1_1_reference_handler_3_01cl__device__id_01_4.html#ae3392ce2c4055446680bde82e60c976c">retain</a>(cl_device_id device)</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;    { return ::clRetainDevice(device); }</div><div class="line"><a name="l01489"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler_3_01cl__device__id_01_4.html#a70614c8eeee136fb4887bae35216d620"> 1489</a></span>&#160;    <span class="keyword">static</span> cl_int <a class="code" href="structcl_1_1detail_1_1_reference_handler_3_01cl__device__id_01_4.html#a70614c8eeee136fb4887bae35216d620">release</a>(cl_device_id device)</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;    { return ::clReleaseDevice(device); }</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;};</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;<span class="preprocessor">#else // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a>&lt;cl_device_id&gt;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;{</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;    <span class="comment">// cl_device_id does not have retain().</span></div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;    <span class="keyword">static</span> cl_int retain(cl_device_id)</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;    { <span class="keywordflow">return</span> CL_SUCCESS; }</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;    <span class="comment">// cl_device_id does not have release().</span></div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;    <span class="keyword">static</span> cl_int release(cl_device_id)</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;    { <span class="keywordflow">return</span> CL_SUCCESS; }</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;};</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;<span class="preprocessor">#endif // ! (CL_HPP_TARGET_OPENCL_VERSION &gt;= 120)</span></div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l01509"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler_3_01cl__platform__id_01_4.html"> 1509</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a>&lt;cl_platform_id&gt;</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;{</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;    <span class="comment">// cl_platform_id does not have retain().</span></div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;    <span class="keyword">static</span> cl_int retain(cl_platform_id)</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;    { <span class="keywordflow">return</span> CL_SUCCESS; }</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;    <span class="comment">// cl_platform_id does not have release().</span></div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;    <span class="keyword">static</span> cl_int release(cl_platform_id)</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;    { <span class="keywordflow">return</span> CL_SUCCESS; }</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;};</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l01520"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler_3_01cl__context_01_4.html"> 1520</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a>&lt;cl_context&gt;</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;{</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;    <span class="keyword">static</span> cl_int retain(cl_context context)</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;    { return ::clRetainContext(context); }</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;    <span class="keyword">static</span> cl_int release(cl_context context)</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;    { return ::clReleaseContext(context); }</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;};</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l01529"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler_3_01cl__command__queue_01_4.html"> 1529</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a>&lt;cl_command_queue&gt;</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;{</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;    <span class="keyword">static</span> cl_int retain(cl_command_queue queue)</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;    { return ::clRetainCommandQueue(queue); }</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;    <span class="keyword">static</span> cl_int release(cl_command_queue queue)</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;    { return ::clReleaseCommandQueue(queue); }</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;};</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l01538"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler_3_01cl__mem_01_4.html"> 1538</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a>&lt;cl_mem&gt;</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;{</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;    <span class="keyword">static</span> cl_int retain(cl_mem memory)</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;    { return ::clRetainMemObject(memory); }</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;    <span class="keyword">static</span> cl_int release(cl_mem memory)</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;    { return ::clReleaseMemObject(memory); }</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;};</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l01547"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler_3_01cl__sampler_01_4.html"> 1547</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a>&lt;cl_sampler&gt;</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;{</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;    <span class="keyword">static</span> cl_int retain(cl_sampler sampler)</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;    { return ::clRetainSampler(sampler); }</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;    <span class="keyword">static</span> cl_int release(cl_sampler sampler)</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;    { return ::clReleaseSampler(sampler); }</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;};</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l01556"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler_3_01cl__program_01_4.html"> 1556</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a>&lt;cl_program&gt;</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;{</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;    <span class="keyword">static</span> cl_int retain(cl_program program)</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;    { return ::clRetainProgram(program); }</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;    <span class="keyword">static</span> cl_int release(cl_program program)</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;    { return ::clReleaseProgram(program); }</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;};</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l01565"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler_3_01cl__kernel_01_4.html"> 1565</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a>&lt;cl_kernel&gt;</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;{</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;    <span class="keyword">static</span> cl_int retain(cl_kernel kernel)</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;    { return ::clRetainKernel(kernel); }</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;    <span class="keyword">static</span> cl_int release(cl_kernel kernel)</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;    { return ::clReleaseKernel(kernel); }</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;};</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l01574"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_reference_handler_3_01cl__event_01_4.html"> 1574</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler</a>&lt;cl_event&gt;</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;{</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;    <span class="keyword">static</span> cl_int retain(cl_event event)</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;    { return ::clRetainEvent(event); }</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;    <span class="keyword">static</span> cl_int release(cl_event event)</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;    { return ::clReleaseEvent(event); }</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;};</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;<span class="comment">// Extracts version number with major in the upper 16 bits, minor in the lower 16</span></div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;<span class="keyword">static</span> cl_uint getVersion(<span class="keyword">const</span> vector&lt;char&gt; &amp;versionInfo)</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;{</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;    <span class="keywordtype">int</span> highVersion = 0;</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;    <span class="keywordtype">int</span> lowVersion = 0;</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;    <span class="keywordtype">int</span> index = 7;</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;    <span class="keywordflow">while</span>(versionInfo[index] != <span class="charliteral">&#39;.&#39;</span> ) {</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;        highVersion *= 10;</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;        highVersion += versionInfo[index]-<span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;        ++index;</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;    }</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;    ++index;</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;    <span class="keywordflow">while</span>(versionInfo[index] != <span class="charliteral">&#39; &#39;</span> &amp;&amp;  versionInfo[index] != <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;        lowVersion *= 10;</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;        lowVersion += versionInfo[index]-<span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;        ++index;</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;    }</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;    <span class="keywordflow">return</span> (highVersion &lt;&lt; 16) | lowVersion;</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;}</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;<span class="keyword">static</span> cl_uint getPlatformVersion(cl_platform_id platform)</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;{</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;    size_type size = 0;</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;    clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &amp;size);</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;    vector&lt;char&gt; versionInfo(size);</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;    clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, versionInfo.data(), &amp;size);</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;    <span class="keywordflow">return</span> getVersion(versionInfo);</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;}</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;<span class="keyword">static</span> cl_uint getDevicePlatformVersion(cl_device_id device)</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;{</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;    cl_platform_id platform;</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;    clGetDeviceInfo(device, CL_DEVICE_PLATFORM, <span class="keyword">sizeof</span>(platform), &amp;platform, NULL);</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;    <span class="keywordflow">return</span> getPlatformVersion(platform);</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;}</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;<span class="keyword">static</span> cl_uint getContextPlatformVersion(cl_context context)</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;{</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;    <span class="comment">// The platform cannot be queried directly, so we first have to grab a</span></div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;    <span class="comment">// device and obtain its context</span></div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;    size_type size = 0;</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;    clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &amp;size);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;    <span class="keywordflow">if</span> (size == 0)</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;    vector&lt;cl_device_id&gt; devices(size/<span class="keyword">sizeof</span>(cl_device_id));</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;    clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices.data(), NULL);</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;    <span class="keywordflow">return</span> getDevicePlatformVersion(devices[0]);</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;}</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01636"></a><span class="lineno"><a class="line" href="classcl_1_1detail_1_1_wrapper.html"> 1636</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a></div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;{</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;    <span class="keyword">typedef</span> T cl_type;</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;    cl_type object_;</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a>() : object_(NULL) { }</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;    </div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a>(<span class="keyword">const</span> cl_type &amp;obj, <span class="keywordtype">bool</span> retainObject) : object_(obj) </div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;    {</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;        <span class="keywordflow">if</span> (retainObject) { </div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;            detail::errHandler(retain(), __RETAIN_ERR); </div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;        }</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;    }</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;    ~<a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a>()</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;    {</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;        <span class="keywordflow">if</span> (object_ != NULL) { release(); }</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;    }</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp; rhs)</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;    {</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;        object_ = rhs.object_;</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;        detail::errHandler(retain(), __RETAIN_ERR);</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;    }</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a>(<a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp;&amp; rhs) CL_HPP_NOEXCEPT_</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;    {</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;        object_ = rhs.object_;</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;        rhs.object_ = NULL;</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;    }</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp; rhs)</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;    {</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;        <span class="keywordflow">if</span> (<span class="keyword">this</span> != &amp;rhs) {</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;            detail::errHandler(release(), __RELEASE_ERR);</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;            object_ = rhs.object_;</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;            detail::errHandler(retain(), __RETAIN_ERR);</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;        }</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;    }</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp; operator = (<a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp;&amp; rhs)</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;    {</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;        <span class="keywordflow">if</span> (<span class="keyword">this</span> != &amp;rhs) {</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;            detail::errHandler(release(), __RELEASE_ERR);</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;            object_ = rhs.object_;</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;            rhs.object_ = NULL;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;        }</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;    }</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp; operator = (<span class="keyword">const</span> cl_type &amp;rhs)</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;    {</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;        detail::errHandler(release(), __RELEASE_ERR);</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;        object_ = rhs;</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;    }</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;    <span class="keyword">const</span> cl_type&amp; operator ()()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> object_; }</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;    cl_type&amp; operator ()() { <span class="keywordflow">return</span> object_; }</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;    <span class="keyword">const</span> cl_type <span class="keyword">get</span>() <span class="keyword">const</span> { <span class="keywordflow">return</span> object_; }</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;    cl_type <span class="keyword">get</span>() { <span class="keywordflow">return</span> object_; }</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Func, <span class="keyword">typename</span> U&gt;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;    <span class="keyword">friend</span> <span class="keyword">inline</span> cl_int getInfoHelper(Func, cl_uint, U*, <span class="keywordtype">int</span>, <span class="keyword">typename</span> U::cl_type);</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;    cl_int retain()<span class="keyword"> const</span></div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;        <span class="keywordflow">if</span> (object_ != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler&lt;cl_type&gt;::retain</a>(object_);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;        }</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;        <span class="keywordflow">else</span> {</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;            <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;        }</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;    }</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;    cl_int release()<span class="keyword"> const</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;        <span class="keywordflow">if</span> (object_ != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler&lt;cl_type&gt;::release</a>(object_);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;        }</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;        <span class="keywordflow">else</span> {</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;            <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;        }</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;    }</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;};</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l01733"></a><span class="lineno"><a class="line" href="classcl_1_1detail_1_1_wrapper_3_01cl__device__id_01_4.html"> 1733</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a>&lt;cl_device_id&gt;</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;{</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;    <span class="keyword">typedef</span> cl_device_id cl_type;</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;    cl_type object_;</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;    <span class="keywordtype">bool</span> referenceCountable_;</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> isReferenceCountable(cl_device_id device)</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;    {</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;        <span class="keywordtype">bool</span> retVal = <span class="keyword">false</span>;</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;        <span class="keywordflow">if</span> (device != NULL) {</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;            <span class="keywordtype">int</span> version = getDevicePlatformVersion(device);</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;            <span class="keywordflow">if</span>(version &gt; ((1 &lt;&lt; 16) + 1)) {</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;                retVal = <span class="keyword">true</span>;</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;            }</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;        }</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;<span class="preprocessor">#else // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;        retVal = <span class="keyword">true</span>;</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;        <span class="keywordflow">return</span> retVal;</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;    }</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a>() : object_(NULL), referenceCountable_(<span class="keyword">false</span>) </div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;    { </div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;    }</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;    </div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a>(<span class="keyword">const</span> cl_type &amp;obj, <span class="keywordtype">bool</span> retainObject) : </div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;        object_(obj), </div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;        referenceCountable_(<span class="keyword">false</span>) </div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;    {</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;        referenceCountable_ = isReferenceCountable(obj); </div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;        <span class="keywordflow">if</span> (retainObject) {</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;            detail::errHandler(retain(), __RETAIN_ERR);</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;        }</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;    }</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;    ~<a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a>()</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;    {</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;        release();</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;    }</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;    </div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp; rhs)</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;    {</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;        object_ = rhs.object_;</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;        referenceCountable_ = isReferenceCountable(object_); </div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;        detail::errHandler(retain(), __RETAIN_ERR);</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;    }</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper</a>(<a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp;&amp; rhs) CL_HPP_NOEXCEPT_</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;    {</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;        object_ = rhs.object_;</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;        referenceCountable_ = rhs.referenceCountable_;</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;        rhs.object_ = NULL;</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;        rhs.referenceCountable_ = <span class="keyword">false</span>;</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;    }</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp; rhs)</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;    {</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;        <span class="keywordflow">if</span> (<span class="keyword">this</span> != &amp;rhs) {</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;            detail::errHandler(release(), __RELEASE_ERR);</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;            object_ = rhs.object_;</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;            referenceCountable_ = rhs.referenceCountable_;</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;            detail::errHandler(retain(), __RETAIN_ERR);</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;        }</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;    }</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp; operator = (<a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp;&amp; rhs)</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;    {</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;        <span class="keywordflow">if</span> (<span class="keyword">this</span> != &amp;rhs) {</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;            detail::errHandler(release(), __RELEASE_ERR);</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;            object_ = rhs.object_;</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;            referenceCountable_ = rhs.referenceCountable_;</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;            rhs.object_ = NULL;</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;            rhs.referenceCountable_ = <span class="keyword">false</span>;</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;        }</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;    }</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;    <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;cl_type&gt;</a>&amp; operator = (<span class="keyword">const</span> cl_type &amp;rhs)</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;    {</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;        detail::errHandler(release(), __RELEASE_ERR);</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;        object_ = rhs;</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;        referenceCountable_ = isReferenceCountable(object_); </div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;    }</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;    <span class="keyword">const</span> cl_type&amp; operator ()()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> object_; }</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;    cl_type&amp; operator ()() { <span class="keywordflow">return</span> object_; }</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;    cl_type <span class="keyword">get</span>() <span class="keyword">const</span> { <span class="keywordflow">return</span> object_; }</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Func, <span class="keyword">typename</span> U&gt;</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;    <span class="keyword">friend</span> <span class="keyword">inline</span> cl_int getInfoHelper(Func, cl_uint, U*, <span class="keywordtype">int</span>, <span class="keyword">typename</span> U::cl_type);</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Func, <span class="keyword">typename</span> U&gt;</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;    <span class="keyword">friend</span> <span class="keyword">inline</span> cl_int getInfoHelper(Func, cl_uint, vector&lt;U&gt;*, <span class="keywordtype">int</span>, <span class="keyword">typename</span> U::cl_type);</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;    cl_int retain()<span class="keyword"> const</span></div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;        <span class="keywordflow">if</span>( object_ != <span class="keyword">nullptr</span> &amp;&amp; referenceCountable_ ) {</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler&lt;cl_type&gt;::retain</a>(object_);</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;        }</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;        <span class="keywordflow">else</span> {</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;            <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;        }</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;    }</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;    cl_int release()<span class="keyword"> const</span></div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;        <span class="keywordflow">if</span> (object_ != <span class="keyword">nullptr</span> &amp;&amp; referenceCountable_) {</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;            <span class="keywordflow">return</span> <a class="code" href="structcl_1_1detail_1_1_reference_handler.html">ReferenceHandler&lt;cl_type&gt;::release</a>(object_);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;        }</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;        <span class="keywordflow">else</span> {</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;            <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;        }</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;    }</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;};</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;T&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;T&gt;</a> &amp;rhs)</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;{</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;    <span class="keywordflow">return</span> lhs() == rhs();</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;}</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;T&gt;</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">Wrapper&lt;T&gt;</a> &amp;rhs)</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;{</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;    <span class="keywordflow">return</span> !operator==(lhs, rhs);</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;}</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;} <span class="comment">// namespace detail</span></div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;<span class="keyword">using</span> BuildLogType = vector&lt;std::pair&lt;cl::Device, typename detail::param_traits&lt;detail::cl_program_build_info, CL_PROGRAM_BUILD_LOG&gt;::param_type&gt;&gt;;</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;<span class="keyword">class </span>BuildError : <span class="keyword">public</span> Error</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;{</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;    BuildLogType buildLogs;</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;    BuildError(cl_int err, <span class="keyword">const</span> <span class="keywordtype">char</span> * errStr, <span class="keyword">const</span> BuildLogType &amp;vec) : Error(err, errStr), buildLogs(vec)</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;    {</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;    }</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;    BuildLogType getBuildLog()<span class="keyword"> const</span></div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;        <span class="keywordflow">return</span> buildLogs;</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160;    }</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;};</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;<span class="keyword">namespace </span>detail {</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;    <span class="keyword">static</span> <span class="keyword">inline</span> cl_int buildErrHandler(</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160;        cl_int err,</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> * errStr,</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;        <span class="keyword">const</span> BuildLogType &amp;buildLogs)</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;    {</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;            <span class="keywordflow">throw</span> BuildError(err, errStr, buildLogs);</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;        }</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;    }</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;} <span class="comment">// namespace detail</span></div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;<span class="keyword">namespace </span>detail {</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;    <span class="keyword">static</span> <span class="keyword">inline</span> cl_int buildErrHandler(</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;        cl_int err,</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> * errStr,</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;        <span class="keyword">const</span> BuildLogType &amp;buildLogs)</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160;    {</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;        (void)buildLogs; <span class="comment">// suppress unused variable warning</span></div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;        (void)errStr;</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;    }</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160;} <span class="comment">// namespace detail</span></div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;<span class="preprocessor">#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160;</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;</div><div class="line"><a name="l01929"></a><span class="lineno"><a class="line" href="structcl_1_1_image_format.html"> 1929</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1_image_format.html">ImageFormat</a> : <span class="keyword">public</span> cl_image_format</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;{</div><div class="line"><a name="l01932"></a><span class="lineno"><a class="line" href="structcl_1_1_image_format.html#adf48b6e9dfdfefb7583e20826c3b4a14"> 1932</a></span>&#160;    <a class="code" href="structcl_1_1_image_format.html#adf48b6e9dfdfefb7583e20826c3b4a14">ImageFormat</a>(){}</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;</div><div class="line"><a name="l01935"></a><span class="lineno"><a class="line" href="structcl_1_1_image_format.html#a039deeaa451a52448014794e7dae30ba"> 1935</a></span>&#160;    <a class="code" href="structcl_1_1_image_format.html#a039deeaa451a52448014794e7dae30ba">ImageFormat</a>(cl_channel_order order, cl_channel_type type)</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;    {</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;        image_channel_order = order;</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;        image_channel_data_type = type;</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;    }</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;</div><div class="line"><a name="l01942"></a><span class="lineno"><a class="line" href="structcl_1_1_image_format.html#a4b9583ef49e6681c133ff0099404b713"> 1942</a></span>&#160;    <a class="code" href="structcl_1_1_image_format.html">ImageFormat</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="structcl_1_1_image_format.html">ImageFormat</a>&amp; rhs)</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;    {</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;        <span class="keywordflow">if</span> (<span class="keyword">this</span> != &amp;rhs) {</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;            this-&gt;image_channel_data_type = rhs.image_channel_data_type;</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160;            this-&gt;image_channel_order     = rhs.image_channel_order;</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;        }</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;    }</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;};</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;</div><div class="line"><a name="l01959"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html"> 1959</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_device.html">Device</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper</a>&lt;cl_device_id&gt;</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;{</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;    <span class="keyword">static</span> std::once_flag default_initialized_;</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_device.html">Device</a> default_;</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;    <span class="keyword">static</span> cl_int default_error_;</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> makeDefault();</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> makeDefaultProvided(<span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a> &amp;p) {</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;        default_ = p;</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;    }</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;<span class="preprocessor">#ifdef CL_HPP_UNIT_TEST_ENABLE</span></div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> unitTestClearDefault() {</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;        default_ = <a class="code" href="classcl_1_1_device.html">Device</a>();</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;    }</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;<span class="preprocessor">#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE</span></div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;</div><div class="line"><a name="l01996"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html#a6131ff3eb77c31dfba11091a3c0f4235"> 1996</a></span>&#160;    <a class="code" href="classcl_1_1_device.html#a6131ff3eb77c31dfba11091a3c0f4235">Device</a>() : detail::Wrapper&lt;cl_type&gt;() { }</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;</div><div class="line"><a name="l02002"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html#ad28b573c8a28028a06ded4e1dc7fa725"> 2002</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_device.html#ad28b573c8a28028a06ded4e1dc7fa725">Device</a>(<span class="keyword">const</span> cl_device_id &amp;device, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;        detail::Wrapper&lt;cl_type&gt;(device, retainObject) { }</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160;</div><div class="line"><a name="l02009"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html#a7428cf3cdccc824c414730ed65e40a0d"> 2009</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_device.html">Device</a> <a class="code" href="classcl_1_1_device.html#a7428cf3cdccc824c414730ed65e40a0d">getDefault</a>(</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;        cl_int *errResult = NULL)</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;    {</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;        std::call_once(default_initialized_, makeDefault);</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;        detail::errHandler(default_error_);</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;        <span class="keywordflow">if</span> (errResult != NULL) {</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;            *errResult = default_error_;</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;        }</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;        <span class="keywordflow">return</span> default_;</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;    }</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;</div><div class="line"><a name="l02027"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html#abff439f0de1ed8699a1b93a702d0fc65"> 2027</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_device.html">Device</a> <a class="code" href="classcl_1_1_device.html#abff439f0de1ed8699a1b93a702d0fc65">setDefault</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a> &amp;default_device)</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;    {</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;        std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_device));</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;        detail::errHandler(default_error_);</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;        <span class="keywordflow">return</span> default_;</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;    }</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;</div><div class="line"><a name="l02038"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html#a432e00756f0972116bae69e81387c82d"> 2038</a></span>&#160;    <a class="code" href="classcl_1_1_device.html">Device</a>&amp; operator = (<span class="keyword">const</span> cl_device_id&amp; rhs)</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;    {</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(rhs);</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;    }</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;</div><div class="line"><a name="l02047"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html#a8445328fa0af11c93f20615f820b93fc"> 2047</a></span>&#160;    <a class="code" href="classcl_1_1_device.html#a8445328fa0af11c93f20615f820b93fc">Device</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a>&amp; dev) : detail::Wrapper&lt;cl_type&gt;(dev) {}</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160;</div><div class="line"><a name="l02052"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html#a53aac3e18ae85e11fd08626d80621606"> 2052</a></span>&#160;    <a class="code" href="classcl_1_1_device.html">Device</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a> &amp;dev)</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;    {</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(dev);</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;    }</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;</div><div class="line"><a name="l02061"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html#a9a8f38bb1636628bdb31d3a47c8cee36"> 2061</a></span>&#160;    <a class="code" href="classcl_1_1_device.html#a9a8f38bb1636628bdb31d3a47c8cee36">Device</a>(<a class="code" href="classcl_1_1_device.html">Device</a>&amp;&amp; dev) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;</a>(std::move(dev)) {}</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;</div><div class="line"><a name="l02066"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html#aedea093cb357dcc87ff7003d143f1bfc"> 2066</a></span>&#160;    <a class="code" href="classcl_1_1_device.html">Device</a>&amp; operator = (<a class="code" href="classcl_1_1_device.html">Device</a> &amp;&amp;dev)</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;    {</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(std::move(dev));</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160;    }</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l02074"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html#a575493c25049dae087540ed8a65efd6d"> 2074</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_device.html#a575493c25049dae087540ed8a65efd6d">getInfo</a>(cl_device_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160;            detail::getInfo(&amp;::clGetDeviceInfo, object_, name, param),</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;            __GET_DEVICE_INFO_ERR);</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;    }</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_device_info, name&gt;::param_type</a></div><div class="line"><a name="l02084"></a><span class="lineno"><a class="line" href="classcl_1_1_device.html#a2b776c204cde7b4b53cde728ed5bf79b"> 2084</a></span>&#160;    <a class="code" href="classcl_1_1_device.html#a2b776c204cde7b4b53cde728ed5bf79b">getInfo</a>(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;            detail::cl_device_info, name&gt;::param_type param;</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;        cl_int result = getInfo(name, &amp;param);</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;            *err = result;</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;        }</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160;    }</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;    cl_int createSubDevices(</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;        <span class="keyword">const</span> cl_device_partition_property * properties,</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;        vector&lt;Device&gt;* devices)</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;    {</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160;        cl_uint n = 0;</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;        cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &amp;n);</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __CREATE_SUB_DEVICES_ERR);</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160;        }</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;        vector&lt;cl_device_id&gt; ids(n);</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;        err = clCreateSubDevices(object_, properties, n, ids.data(), NULL);</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __CREATE_SUB_DEVICES_ERR);</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;        }</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160;        <span class="comment">// Cannot trivially assign because we need to capture intermediates </span></div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;        <span class="comment">// with safe construction</span></div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;        <span class="keywordflow">if</span> (devices) {</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160;            devices-&gt;resize(ids.size());</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;            <span class="comment">// Assign to param, constructing with retain behaviour</span></div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160;            <span class="comment">// to correctly capture each underlying CL object</span></div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;            <span class="keywordflow">for</span> (size_type i = 0; i &lt; ids.size(); i++) {</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;                <span class="comment">// We do not need to retain because this device is being created </span></div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;                <span class="comment">// by the runtime</span></div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;                (*devices)[i] = <a class="code" href="classcl_1_1_device.html">Device</a>(ids[i], <span class="keyword">false</span>);</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160;            }</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160;        }</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;        <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;    }</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;<span class="preprocessor">#elif defined(CL_HPP_USE_CL_DEVICE_FISSION)</span></div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160;</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;    cl_int createSubDevices(</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160;        <span class="keyword">const</span> cl_device_partition_property_ext * properties,</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;        vector&lt;Device&gt;* devices)</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160;    {</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;        <span class="keyword">typedef</span> CL_API_ENTRY cl_int </div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;            ( CL_API_CALL * PFN_clCreateSubDevicesEXT)(</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;                cl_device_id <span class="comment">/*in_device*/</span>,</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;                <span class="keyword">const</span> cl_device_partition_property_ext * <span class="comment">/* properties */</span>,</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;                cl_uint <span class="comment">/*num_entries*/</span>,</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;                cl_device_id * <span class="comment">/*out_devices*/</span>,</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160;                cl_uint * <span class="comment">/*num_devices*/</span> ) CL_EXT_SUFFIX__VERSION_1_1;</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160;        <span class="keyword">static</span> PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL;</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;        CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateSubDevicesEXT);</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160;        cl_uint n = 0;</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;        cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &amp;n);</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __CREATE_SUB_DEVICES_ERR);</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;        }</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160;        vector&lt;cl_device_id&gt; ids(n);</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160;        err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids.data(), NULL);</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __CREATE_SUB_DEVICES_ERR);</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;        }</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160;        <span class="comment">// Cannot trivially assign because we need to capture intermediates </span></div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160;        <span class="comment">// with safe construction</span></div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160;        <span class="keywordflow">if</span> (devices) {</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160;            devices-&gt;resize(ids.size());</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160;</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;            <span class="comment">// Assign to param, constructing with retain behaviour</span></div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;            <span class="comment">// to correctly capture each underlying CL object</span></div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;            <span class="keywordflow">for</span> (size_type i = 0; i &lt; ids.size(); i++) {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;                <span class="comment">// We do not need to retain because this device is being created </span></div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;                <span class="comment">// by the runtime</span></div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;                (*devices)[i] = <a class="code" href="classcl_1_1_device.html">Device</a>(ids[i], <span class="keyword">false</span>);</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160;            }</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;        }</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;        <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160;    }</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;<span class="preprocessor">#endif // defined(CL_HPP_USE_CL_DEVICE_FISSION)</span></div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160;};</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Device::default_initialized_;</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ <a class="code" href="classcl_1_1_device.html">Device</a> Device::default_;</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Device::default_error_ = CL_SUCCESS;</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;</div><div class="line"><a name="l02192"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html"> 2192</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_platform.html">Platform</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper</a>&lt;cl_platform_id&gt;</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160;{</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160;    <span class="keyword">static</span> std::once_flag default_initialized_;</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_platform.html">Platform</a> default_;</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;    <span class="keyword">static</span> cl_int default_error_;</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> makeDefault() {</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160;        <span class="comment">/* Throwing an exception from a call_once invocation does not do</span></div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;<span class="comment">        * what we wish, so we catch it and save the error.</span></div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160;<span class="comment">        */</span></div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;        <span class="keywordflow">try</span></div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160;        {</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;            <span class="comment">// If default wasn&#39;t passed ,generate one</span></div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;            <span class="comment">// Otherwise set it</span></div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;            cl_uint n = 0;</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;            cl_int err = ::clGetPlatformIDs(0, NULL, &amp;n);</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;            <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;                default_error_ = err;</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160;            }</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160;            <span class="keywordflow">if</span> (n == 0) {</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160;                default_error_ = CL_INVALID_PLATFORM;</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160;            }</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160;</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;            vector&lt;cl_platform_id&gt; ids(n);</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160;            err = ::clGetPlatformIDs(n, ids.data(), NULL);</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160;            <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160;                default_error_ = err;</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160;            }</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160;            default_ = <a class="code" href="classcl_1_1_platform.html">Platform</a>(ids[0]);</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;        }</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;        <span class="keywordflow">catch</span> (cl::Error &amp;e) {</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160;            default_error_ = e.err();</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160;        }</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160;    }</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160;</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> makeDefaultProvided(<span class="keyword">const</span> <a class="code" href="classcl_1_1_platform.html">Platform</a> &amp;p) {</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;       default_ = p;</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160;    }</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;    </div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160;<span class="preprocessor">#ifdef CL_HPP_UNIT_TEST_ENABLE</span></div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> unitTestClearDefault() {</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160;        default_ = <a class="code" href="classcl_1_1_platform.html">Platform</a>();</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160;    }</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160;<span class="preprocessor">#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE</span></div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160;</div><div class="line"><a name="l02265"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html#a616344e02c3723347c752c02b7015212"> 2265</a></span>&#160;    <a class="code" href="classcl_1_1_platform.html#a616344e02c3723347c752c02b7015212">Platform</a>() : detail::Wrapper&lt;cl_type&gt;()  { }</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160;</div><div class="line"><a name="l02274"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html#a339232a64068fe7157e124b82fb4b9fa"> 2274</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_platform.html#a339232a64068fe7157e124b82fb4b9fa">Platform</a>(<span class="keyword">const</span> cl_platform_id &amp;platform, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160;        detail::Wrapper&lt;cl_type&gt;(platform, retainObject) { }</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;</div><div class="line"><a name="l02281"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html#aea2f06c8796a53c641fa5e17800b2ead"> 2281</a></span>&#160;    <a class="code" href="classcl_1_1_platform.html">Platform</a>&amp; operator = (<span class="keyword">const</span> cl_platform_id&amp; rhs)</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;    {</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(rhs);</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;    }</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160;</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_platform.html">Platform</a> getDefault(</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160;        cl_int *errResult = NULL)</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160;    {</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;        std::call_once(default_initialized_, makeDefault);</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160;        detail::errHandler(default_error_);</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160;        <span class="keywordflow">if</span> (errResult != NULL) {</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;            *errResult = default_error_;</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160;        }</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;        <span class="keywordflow">return</span> default_;</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;    }</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160;</div><div class="line"><a name="l02305"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html#afcf93176bebefc3add081c2d93935453"> 2305</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_platform.html">Platform</a> <a class="code" href="classcl_1_1_platform.html#afcf93176bebefc3add081c2d93935453">setDefault</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_platform.html">Platform</a> &amp;default_platform)</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160;    {</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160;        std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_platform));</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160;        detail::errHandler(default_error_);</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160;        <span class="keywordflow">return</span> default_;</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160;    }</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;</div><div class="line"><a name="l02313"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html#a5000dc4a51c43e9e9bf851c695cf16f2"> 2313</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_platform.html#a5000dc4a51c43e9e9bf851c695cf16f2">getInfo</a>(cl_platform_info name, <span class="keywordtype">string</span>* param)<span class="keyword"> const</span></div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160;            detail::getInfo(&amp;::clGetPlatformInfo, object_, name, param),</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160;            __GET_PLATFORM_INFO_ERR);</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160;    }</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160;</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_platform_info, name&gt;::param_type</a></div><div class="line"><a name="l02323"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html#aa7d1ac92678763f18a40c7bb026b6fb1"> 2323</a></span>&#160;    <a class="code" href="classcl_1_1_platform.html#aa7d1ac92678763f18a40c7bb026b6fb1">getInfo</a>(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160;            detail::cl_platform_info, name&gt;::param_type param;</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;        cl_int result = getInfo(name, &amp;param);</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160;            *err = result;</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160;        }</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160;    }</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;</div><div class="line"><a name="l02338"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html#a73cf4b02df3beafae1a97a91ee3e9565"> 2338</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_platform.html#a73cf4b02df3beafae1a97a91ee3e9565">getDevices</a>(</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160;        cl_device_type type,</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160;        vector&lt;Device&gt;* devices)<span class="keyword"> const</span></div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160;        cl_uint n = 0;</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160;        <span class="keywordflow">if</span>( devices == NULL ) {</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR);</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;        }</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;        cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &amp;n);</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __GET_DEVICE_IDS_ERR);</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160;        }</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160;</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;        vector&lt;cl_device_id&gt; ids(n);</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160;        err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL);</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __GET_DEVICE_IDS_ERR);</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160;        }</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160;</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160;        <span class="comment">// Cannot trivially assign because we need to capture intermediates </span></div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;        <span class="comment">// with safe construction</span></div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160;        <span class="comment">// We must retain things we obtain from the API to avoid releasing</span></div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160;        <span class="comment">// API-owned objects.</span></div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160;        <span class="keywordflow">if</span> (devices) {</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160;            devices-&gt;resize(ids.size());</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160;            <span class="comment">// Assign to param, constructing with retain behaviour</span></div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;            <span class="comment">// to correctly capture each underlying CL object</span></div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;            <span class="keywordflow">for</span> (size_type i = 0; i &lt; ids.size(); i++) {</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160;                (*devices)[i] = <a class="code" href="classcl_1_1_device.html">Device</a>(ids[i], <span class="keyword">true</span>);</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;            }</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160;        }</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160;        <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160;    }</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160;</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;<span class="preprocessor">#if defined(CL_HPP_USE_DX_INTEROP)</span></div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160;</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160;    cl_int getDevices(</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160;        cl_d3d10_device_source_khr d3d_device_source,</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160;        <span class="keywordtype">void</span> *                     d3d_object,</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160;        cl_d3d10_device_set_khr    d3d_device_set,</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160;        vector&lt;Device&gt;* devices)<span class="keyword"> const</span></div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160;        <span class="keyword">typedef</span> CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)(</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160;            cl_platform_id platform, </div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160;            cl_d3d10_device_source_khr d3d_device_source, </div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160;            <span class="keywordtype">void</span> * d3d_object,</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160;            cl_d3d10_device_set_khr d3d_device_set,</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160;            cl_uint num_entries,</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160;            cl_device_id * devices,</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160;            cl_uint* num_devices);</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160;</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160;        <span class="keywordflow">if</span>( devices == NULL ) {</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR);</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160;        }</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160;</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160;        <span class="keyword">static</span> PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL;</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160;        CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(object_, clGetDeviceIDsFromD3D10KHR);</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160;</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160;        cl_uint n = 0;</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160;        cl_int err = pfn_clGetDeviceIDsFromD3D10KHR(</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160;            object_, </div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;            d3d_device_source, </div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160;            d3d_object,</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160;            d3d_device_set, </div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;            0, </div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160;            NULL, </div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160;            &amp;n);</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __GET_DEVICE_IDS_ERR);</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160;        }</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160;</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;        vector&lt;cl_device_id&gt; ids(n);</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160;        err = pfn_clGetDeviceIDsFromD3D10KHR(</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160;            object_, </div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160;            d3d_device_source, </div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160;            d3d_object,</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160;            d3d_device_set,</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160;            n, </div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160;            ids.data(), </div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;            NULL);</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __GET_DEVICE_IDS_ERR);</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160;        }</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160;</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160;        <span class="comment">// Cannot trivially assign because we need to capture intermediates </span></div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160;        <span class="comment">// with safe construction</span></div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;        <span class="comment">// We must retain things we obtain from the API to avoid releasing</span></div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160;        <span class="comment">// API-owned objects.</span></div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160;        <span class="keywordflow">if</span> (devices) {</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160;            devices-&gt;resize(ids.size());</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160;            <span class="comment">// Assign to param, constructing with retain behaviour</span></div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160;            <span class="comment">// to correctly capture each underlying CL object</span></div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160;            <span class="keywordflow">for</span> (size_type i = 0; i &lt; ids.size(); i++) {</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160;                (*devices)[i] = <a class="code" href="classcl_1_1_device.html">Device</a>(ids[i], <span class="keyword">true</span>);</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160;            }</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160;        }</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160;        <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;    }</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160;</div><div class="line"><a name="l02466"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html#af15bd8dced161daee0c5289178c8a0e1"> 2466</a></span>&#160;    <span class="keyword">static</span> cl_int <span class="keyword">get</span>(</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;        vector&lt;Platform&gt;* platforms)</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160;    {</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;        cl_uint n = 0;</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;        <span class="keywordflow">if</span>( platforms == NULL ) {</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR);</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160;        }</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160;</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160;        cl_int err = ::clGetPlatformIDs(0, NULL, &amp;n);</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __GET_PLATFORM_IDS_ERR);</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160;        }</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160;</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160;        vector&lt;cl_platform_id&gt; ids(n);</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160;        err = ::clGetPlatformIDs(n, ids.data(), NULL);</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __GET_PLATFORM_IDS_ERR);</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160;        }</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160;</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;        <span class="keywordflow">if</span> (platforms) {</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160;            platforms-&gt;resize(ids.size());</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160;</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;            <span class="comment">// Platforms don&#39;t reference count</span></div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160;            <span class="keywordflow">for</span> (size_type i = 0; i &lt; ids.size(); i++) {</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160;                (*platforms)[i] = <a class="code" href="classcl_1_1_platform.html">Platform</a>(ids[i]);</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160;            }</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160;        }</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160;        <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160;    }</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160;</div><div class="line"><a name="l02501"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html#a2a60edf4cfdfda695919c2879a9ae64e"> 2501</a></span>&#160;    <span class="keyword">static</span> cl_int <span class="keyword">get</span>(</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160;        <a class="code" href="classcl_1_1_platform.html">Platform</a> * platform)</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160;    {</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160;        cl_int err;</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160;        <a class="code" href="classcl_1_1_platform.html">Platform</a> default_platform = Platform::getDefault(&amp;err);</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160;        <span class="keywordflow">if</span> (platform) {</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160;            *platform = default_platform;</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160;        }</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160;    }</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160;</div><div class="line"><a name="l02520"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html#a87f6baad09c31e9f2bc8755a61439d04"> 2520</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_platform.html">Platform</a> <span class="keyword">get</span>(</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160;        cl_int * errResult = NULL)</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;    {</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160;        cl_int err;</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160;        <a class="code" href="classcl_1_1_platform.html">Platform</a> default_platform = Platform::getDefault(&amp;err);</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;        <span class="keywordflow">if</span> (errResult) {</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160;            *errResult = err;</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;        }</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;        <span class="keywordflow">return</span> default_platform;</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;    }    </div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160;    </div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160;    cl_int</div><div class="line"><a name="l02534"></a><span class="lineno"><a class="line" href="classcl_1_1_platform.html#a70313ea76e0e369c4dc951a7f47b531f"> 2534</a></span>&#160;    <a class="code" href="classcl_1_1_platform.html#a70313ea76e0e369c4dc951a7f47b531f">unloadCompiler</a>()</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160;    {</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160;        return ::clUnloadPlatformCompiler(object_);</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160;    }</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160;}; <span class="comment">// class Platform</span></div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160;</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Platform::default_initialized_;</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ <a class="code" href="classcl_1_1_platform.html">Platform</a> Platform::default_;</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Platform::default_error_ = CL_SUCCESS;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160;</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160;</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160;<span class="preprocessor">#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)</span></div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160;</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160;<span class="keyword">inline</span> CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160;<a class="code" href="namespacecl.html#a72d46349148c0075ca64f97f92ba7dc0">UnloadCompiler</a>() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160;<span class="keyword">inline</span> cl_int</div><div class="line"><a name="l02557"></a><span class="lineno"><a class="line" href="namespacecl.html#a72d46349148c0075ca64f97f92ba7dc0"> 2557</a></span>&#160;<a class="code" href="namespacecl.html#a72d46349148c0075ca64f97f92ba7dc0">UnloadCompiler</a>()</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160;{</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160;    return ::clUnloadCompiler();</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160;}</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160;<span class="preprocessor">#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)</span></div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160;</div><div class="line"><a name="l02571"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html"> 2571</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_context.html">Context</a> </div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160;    : <span class="keyword">public</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper</a>&lt;cl_context&gt;</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160;{</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160;    <span class="keyword">static</span> std::once_flag default_initialized_;</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_context.html">Context</a> default_;</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160;    <span class="keyword">static</span> cl_int default_error_;</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160;</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> makeDefault() {</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160;        <span class="comment">/* Throwing an exception from a call_once invocation does not do</span></div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160;<span class="comment">         * what we wish, so we catch it and save the error.</span></div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160;<span class="comment">         */</span></div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160;        <span class="keywordflow">try</span></div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160;        {</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160;<span class="preprocessor">#if !defined(__APPLE__) &amp;&amp; !defined(__MACOS)</span></div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;            <span class="keyword">const</span> <a class="code" href="classcl_1_1_platform.html">Platform</a> &amp;p = Platform::getDefault();</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160;            cl_platform_id defaultPlatform = p();</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;            cl_context_properties properties[3] = {</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160;                CL_CONTEXT_PLATFORM, (cl_context_properties)defaultPlatform, 0</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;            };</div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;<span class="preprocessor">#else // #if !defined(__APPLE__) &amp;&amp; !defined(__MACOS)</span></div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160;            cl_context_properties *properties = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160;<span class="preprocessor">#endif // #if !defined(__APPLE__) &amp;&amp; !defined(__MACOS)</span></div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160;</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160;            default_ = <a class="code" href="classcl_1_1_context.html">Context</a>(</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160;                CL_DEVICE_TYPE_DEFAULT,</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160;                properties,</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160;                NULL,</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160;                NULL,</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;                &amp;default_error_);</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160;        }</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160;        <span class="keywordflow">catch</span> (cl::Error &amp;e) {</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;            default_error_ = e.err();</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160;        }</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160;    }</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160;</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160;</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> makeDefaultProvided(<span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a> &amp;c) {</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160;        default_ = c;</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160;    }</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160;    </div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160;<span class="preprocessor">#ifdef CL_HPP_UNIT_TEST_ENABLE</span></div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160;</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> unitTestClearDefault() {</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160;        default_ = <a class="code" href="classcl_1_1_context.html">Context</a>();</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160;    }</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160;<span class="preprocessor">#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE</span></div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160;</div><div class="line"><a name="l02643"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#ad4a19320d57441a2a0ce6db6548d12a9"> 2643</a></span>&#160;    <a class="code" href="classcl_1_1_context.html#ad4a19320d57441a2a0ce6db6548d12a9">Context</a>(</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160;        <span class="keyword">const</span> vector&lt;Device&gt;&amp; devices,</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160;        cl_context_properties* properties = NULL,</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160;        <span class="keywordtype">void</span> (CL_CALLBACK * notifyFptr)(</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">char</span> *,</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">void</span> *,</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160;            size_type,</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160;            <span class="keywordtype">void</span> *) = NULL,</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160;        <span class="keywordtype">void</span>* data = NULL,</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160;    {</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160;        cl_int error;</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160;</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160;        size_type numDevices = devices.size();</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160;        vector&lt;cl_device_id&gt; deviceIDs(numDevices);</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160;</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160;        <span class="keywordflow">for</span>( size_type deviceIndex = 0; deviceIndex &lt; numDevices; ++deviceIndex ) {</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160;            deviceIDs[deviceIndex] = (devices[deviceIndex])();</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160;        }</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160;</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160;        object_ = ::clCreateContext(</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160;            properties, (cl_uint) numDevices,</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160;            deviceIDs.data(),</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160;            notifyFptr, data, &amp;error);</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160;</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160;        detail::errHandler(error, __CREATE_CONTEXT_ERR);</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160;            *err = error;</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160;        }</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160;    }</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160;</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160;    <a class="code" href="classcl_1_1_context.html">Context</a>(</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a>&amp; device,</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160;        cl_context_properties* properties = NULL,</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160;        <span class="keywordtype">void</span> (CL_CALLBACK * notifyFptr)(</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">char</span> *,</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">void</span> *,</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160;            size_type,</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160;            <span class="keywordtype">void</span> *) = NULL,</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160;        <span class="keywordtype">void</span>* data = NULL,</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160;    {</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160;        cl_int error;</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160;</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160;        cl_device_id deviceID = device();</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160;</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160;        object_ = ::clCreateContext(</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160;            properties, 1,</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160;            &amp;deviceID,</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;            notifyFptr, data, &amp;error);</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160;</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160;        detail::errHandler(error, __CREATE_CONTEXT_ERR);</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160;            *err = error;</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160;        }</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160;    }</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160;    </div><div class="line"><a name="l02704"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#a591bd7ba3cbe268a619b8175627a8985"> 2704</a></span>&#160;    <a class="code" href="classcl_1_1_context.html#a591bd7ba3cbe268a619b8175627a8985">Context</a>(</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160;        cl_device_type type,</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160;        cl_context_properties* properties = NULL,</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160;        <span class="keywordtype">void</span> (CL_CALLBACK * notifyFptr)(</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">char</span> *,</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">void</span> *,</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160;            size_type,</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160;            <span class="keywordtype">void</span> *) = NULL,</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160;        <span class="keywordtype">void</span>* data = NULL,</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160;    {</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160;        cl_int error;</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160;</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160;<span class="preprocessor">#if !defined(__APPLE__) &amp;&amp; !defined(__MACOS)</span></div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160;        cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 };</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160;</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160;        <span class="keywordflow">if</span> (properties == NULL) {</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160;            <span class="comment">// Get a valid platform ID as we cannot send in a blank one</span></div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160;            vector&lt;Platform&gt; platforms;</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160;            error = Platform::get(&amp;platforms);</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160;            <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160;                detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR);</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160;                <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160;                    *err = error;</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;                }</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;            }</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160;</div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160;            <span class="comment">// Check the platforms we found for a device of our specified type</span></div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160;            cl_context_properties platform_id = 0;</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; platforms.size(); i++) {</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160;</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160;                vector&lt;Device&gt; devices;</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160;</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160;                <span class="keywordflow">try</span> {</div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160;</div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160;                    error = platforms[i].getDevices(type, &amp;devices);</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160;</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160;                } <span class="keywordflow">catch</span> (Error) {}</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160;    <span class="comment">// Catch if exceptions are enabled as we don&#39;t want to exit if first platform has no devices of type</span></div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160;    <span class="comment">// We do error checking next anyway, and can throw there if needed</span></div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160;</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160;                <span class="comment">// Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND</span></div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160;                <span class="keywordflow">if</span> (error != CL_SUCCESS &amp;&amp; error != CL_DEVICE_NOT_FOUND) {</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160;                    detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR);</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160;                    <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160;                        *err = error;</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160;                    }</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160;                }</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160;</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160;                <span class="keywordflow">if</span> (devices.size() &gt; 0) {</div><div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160;                    platform_id = (cl_context_properties)platforms[i]();</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160;                }</div><div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>&#160;            }</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160;</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160;            <span class="keywordflow">if</span> (platform_id == 0) {</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160;                detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR);</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160;                <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160;                    *err = CL_DEVICE_NOT_FOUND;</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160;                }</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160;            }</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160;</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160;            prop[1] = platform_id;</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160;            properties = &amp;prop[0];</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160;        }</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160;        object_ = ::clCreateContextFromType(</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160;            properties, type, notifyFptr, data, &amp;error);</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160;</div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160;        detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR);</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160;            *err = error;</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160;        }</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160;    }</div><div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160;</div><div class="line"><a name="l02788"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#ae0a598440f95bc8457433a088cef17a1"> 2788</a></span>&#160;    <a class="code" href="classcl_1_1_context.html#ae0a598440f95bc8457433a088cef17a1">Context</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; ctx) : detail::Wrapper&lt;cl_type&gt;(ctx) {}</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160;</div><div class="line"><a name="l02793"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#a8efbd413385ff1128857f338176bd123"> 2793</a></span>&#160;    <a class="code" href="classcl_1_1_context.html">Context</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a> &amp;ctx)</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160;    {</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(ctx);</div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160;    }</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160;</div><div class="line"><a name="l02802"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#ae2944171ba4199247499fd0bf3c49b81"> 2802</a></span>&#160;    <a class="code" href="classcl_1_1_context.html#ae2944171ba4199247499fd0bf3c49b81">Context</a>(<a class="code" href="classcl_1_1_context.html">Context</a>&amp;&amp; ctx) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;</a>(std::move(ctx)) {}</div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160;</div><div class="line"><a name="l02807"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#a31c45550dcdfdc215d8e4a7d23edd8d4"> 2807</a></span>&#160;    <a class="code" href="classcl_1_1_context.html">Context</a>&amp; operator = (<a class="code" href="classcl_1_1_context.html">Context</a> &amp;&amp;ctx)</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160;    {</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(std::move(ctx));</div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160;    }</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160;</div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160;</div><div class="line"><a name="l02818"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051"> 2818</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_context.html">Context</a> <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">getDefault</a>(cl_int * err = NULL) </div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160;    {</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160;        std::call_once(default_initialized_, makeDefault);</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160;        detail::errHandler(default_error_);</div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160;            *err = default_error_;</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160;        }</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160;        <span class="keywordflow">return</span> default_;</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160;    }</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160;</div><div class="line"><a name="l02835"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#a24a8392d2cb8fcdc5dbf4dd723ee74b4"> 2835</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_context.html">Context</a> <a class="code" href="classcl_1_1_context.html#a24a8392d2cb8fcdc5dbf4dd723ee74b4">setDefault</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a> &amp;default_context)</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;    {</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160;        std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_context));</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160;        detail::errHandler(default_error_);</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160;        <span class="keywordflow">return</span> default_;</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160;    }</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160;</div><div class="line"><a name="l02843"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#a8f7e1c72445ca6e249bc7a6c9278984d"> 2843</a></span>&#160;    <a class="code" href="classcl_1_1_context.html#a8f7e1c72445ca6e249bc7a6c9278984d">Context</a>() : detail::Wrapper&lt;cl_type&gt;() { }</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160;</div><div class="line"><a name="l02850"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#a3fc0fba33d5b467b5d2ee70adb5b1e92"> 2850</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_context.html#a3fc0fba33d5b467b5d2ee70adb5b1e92">Context</a>(<span class="keyword">const</span> cl_context&amp; context, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>&#160;        detail::Wrapper&lt;cl_type&gt;(context, retainObject) { }</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>&#160;</div><div class="line"><a name="l02858"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#a1881d1eb1011e8575fd32f7287ed65f8"> 2858</a></span>&#160;    <a class="code" href="classcl_1_1_context.html">Context</a>&amp; operator = (<span class="keyword">const</span> cl_context&amp; rhs)</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160;    {</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(rhs);</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160;    }</div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160;</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l02866"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#a979d15f9228089af2a657a523b1186e8"> 2866</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_context.html#a979d15f9228089af2a657a523b1186e8">getInfo</a>(cl_context_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160;            detail::getInfo(&amp;::clGetContextInfo, object_, name, param),</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160;            __GET_CONTEXT_INFO_ERR);</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160;    }</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160;</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_context_info, name&gt;::param_type</a></div><div class="line"><a name="l02876"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#ac29ecd6b0bb1c9ff002cc7d4b0b31c99"> 2876</a></span>&#160;    <a class="code" href="classcl_1_1_context.html#ac29ecd6b0bb1c9ff002cc7d4b0b31c99">getInfo</a>(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160;            detail::cl_context_info, name&gt;::param_type param;</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160;        cl_int result = getInfo(name, &amp;param);</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160;            *err = result;</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160;        }</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160;    }</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160;</div><div class="line"><a name="l02891"></a><span class="lineno"><a class="line" href="classcl_1_1_context.html#a5f00a3ede6edd143bbb2954306290199"> 2891</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_context.html#a5f00a3ede6edd143bbb2954306290199">getSupportedImageFormats</a>(</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160;        cl_mem_object_type type,</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160;        vector&lt;ImageFormat&gt;* formats)<span class="keyword"> const</span></div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160;        cl_uint numEntries;</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160;        </div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160;        <span class="keywordflow">if</span> (!formats) {</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160;            <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160;        }</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160;</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160;        cl_int err = ::clGetSupportedImageFormats(</div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160;           object_, </div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160;           flags,</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160;           type, </div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160;           0, </div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160;           NULL, </div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160;           &amp;numEntries);</div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR);</div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160;        }</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160;</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160;        <span class="keywordflow">if</span> (numEntries &gt; 0) {</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160;            vector&lt;ImageFormat&gt; value(numEntries);</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160;            err = ::clGetSupportedImageFormats(</div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160;                object_,</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160;                flags,</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160;                type,</div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160;                numEntries,</div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160;                (cl_image_format*)value.data(),</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160;                NULL);</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160;            <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160;                <span class="keywordflow">return</span> detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR);</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160;            }</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160;</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160;            formats-&gt;assign(begin(value), end(value));</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160;        }</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160;        <span class="keywordflow">else</span> {</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160;            <span class="comment">// If no values are being returned, ensure an empty vector comes back</span></div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160;            formats-&gt;clear();</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160;        }</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160;</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160;        <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160;    }</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160;};</div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160;</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> Device::makeDefault()</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160;{</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160;    <span class="comment">/* Throwing an exception from a call_once invocation does not do</span></div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160;<span class="comment">    * what we wish, so we catch it and save the error.</span></div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160;<span class="comment">    */</span></div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160;    <span class="keywordflow">try</span></div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160;    {</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160;        cl_int error = 0;</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160;</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160;        <a class="code" href="classcl_1_1_context.html">Context</a> context = <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">Context::getDefault</a>(&amp;error);</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160;        detail::errHandler(error, __CREATE_CONTEXT_ERR);</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160;</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160;        <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160;            default_error_ = error;</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160;        }</div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160;        <span class="keywordflow">else</span> {</div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160;            default_ = context.<a class="code" href="classcl_1_1_context.html#a979d15f9228089af2a657a523b1186e8">getInfo</a>&lt;CL_CONTEXT_DEVICES&gt;()[0];</div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160;            default_error_ = CL_SUCCESS;</div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160;        }</div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160;    }</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160;    <span class="keywordflow">catch</span> (cl::Error &amp;e) {</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160;        default_error_ = e.err();</div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160;    }</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160;}</div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160;</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Context::default_initialized_;</div><div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ <a class="code" href="classcl_1_1_context.html">Context</a> Context::default_;</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Context::default_error_ = CL_SUCCESS;</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160;</div><div class="line"><a name="l02978"></a><span class="lineno"><a class="line" href="classcl_1_1_event.html"> 2978</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_event.html">Event</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper</a>&lt;cl_event&gt;</div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160;{</div><div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02982"></a><span class="lineno"><a class="line" href="classcl_1_1_event.html#a90e01689f7b394fc003d66c48a7f6f95"> 2982</a></span>&#160;    <a class="code" href="classcl_1_1_event.html#a90e01689f7b394fc003d66c48a7f6f95">Event</a>() : detail::Wrapper&lt;cl_type&gt;() { }</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160;</div><div class="line"><a name="l02992"></a><span class="lineno"><a class="line" href="classcl_1_1_event.html#a3b035b8ff20d92d0b42f2f0dc8657621"> 2992</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_event.html#a3b035b8ff20d92d0b42f2f0dc8657621">Event</a>(<span class="keyword">const</span> cl_event&amp; event, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160;        detail::Wrapper&lt;cl_type&gt;(event, retainObject) { }</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160;</div><div class="line"><a name="l03000"></a><span class="lineno"><a class="line" href="classcl_1_1_event.html#aa3b9f7abf39de587ee78d0b47699d5f6"> 3000</a></span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>&amp; operator = (<span class="keyword">const</span> cl_event&amp; rhs)</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160;    {</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(rhs);</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160;    }</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160;</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l03008"></a><span class="lineno"><a class="line" href="classcl_1_1_event.html#a4ad1d3040fcb24188f1ac2cd73591252"> 3008</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_event.html#a4ad1d3040fcb24188f1ac2cd73591252">getInfo</a>(cl_event_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160;            detail::getInfo(&amp;::clGetEventInfo, object_, name, param),</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160;            __GET_EVENT_INFO_ERR);</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160;    }</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160;</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_event_info, name&gt;::param_type</a></div><div class="line"><a name="l03018"></a><span class="lineno"><a class="line" href="classcl_1_1_event.html#ad3a362e550fbfa5f18e679357f1cdba8"> 3018</a></span>&#160;    <a class="code" href="classcl_1_1_event.html#ad3a362e550fbfa5f18e679357f1cdba8">getInfo</a>(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160;            detail::cl_event_info, name&gt;::param_type param;</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160;        cl_int result = getInfo(name, &amp;param);</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160;            *err = result;</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160;        }</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160;    }</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160;</div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l03031"></a><span class="lineno"><a class="line" href="classcl_1_1_event.html#a3f5ef317602809c4a99d6f244f758b5f"> 3031</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_event.html#a3f5ef317602809c4a99d6f244f758b5f">getProfilingInfo</a>(cl_profiling_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(detail::getInfo(</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160;            &amp;::clGetEventProfilingInfo, object_, name, param),</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160;            __GET_EVENT_PROFILE_INFO_ERR);</div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160;    }</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160;</div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_profiling_info, name&gt;::param_type</a></div><div class="line"><a name="l03041"></a><span class="lineno"><a class="line" href="classcl_1_1_event.html#ab76c11fecb0af5a0972903ee0f644193"> 3041</a></span>&#160;    <a class="code" href="classcl_1_1_event.html#ab76c11fecb0af5a0972903ee0f644193">getProfilingInfo</a>(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160;            detail::cl_profiling_info, name&gt;::param_type param;</div><div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160;        cl_int result = getProfilingInfo(name, &amp;param);</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160;            *err = result;</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160;        }</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160;    }</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160;</div><div class="line"><a name="l03056"></a><span class="lineno"><a class="line" href="classcl_1_1_event.html#a51f83064c2024df649667071e81fb847"> 3056</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_event.html#a51f83064c2024df649667071e81fb847">wait</a>()<span class="keyword"> const</span></div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160;            ::clWaitForEvents(1, &amp;object_),</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>&#160;            __WAIT_FOR_EVENTS_ERR);</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160;    }</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160;</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160;</div><div class="line"><a name="l03068"></a><span class="lineno"><a class="line" href="classcl_1_1_event.html#a4730c3b113e65efcf88aea0c9da13f52"> 3068</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_event.html#a4730c3b113e65efcf88aea0c9da13f52">setCallback</a>(</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160;        cl_int type,</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160;        <span class="keywordtype">void</span> (CL_CALLBACK * pfn_notify)(cl_event, cl_int, <span class="keywordtype">void</span> *),      </div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160;        <span class="keywordtype">void</span> * user_data = NULL)</div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>&#160;    {</div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160;            ::clSetEventCallback(</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160;                object_,</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160;                type,</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160;                pfn_notify,</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160;                user_data), </div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160;            __SET_EVENT_CALLBACK_ERR);</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160;    }</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160;</div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160;    <span class="keyword">static</span> cl_int</div><div class="line"><a name="l03088"></a><span class="lineno"><a class="line" href="classcl_1_1_event.html#ae84b90e930f72c1019435dd7cefa2fbd"> 3088</a></span>&#160;    <a class="code" href="classcl_1_1_event.html#ae84b90e930f72c1019435dd7cefa2fbd">waitForEvents</a>(<span class="keyword">const</span> vector&lt;Event&gt;&amp; events)</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160;    {</div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160;            ::clWaitForEvents(</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160;                (cl_uint) events.size(), (events.size() &gt; 0) ? (cl_event*)&amp;events.front() : NULL),</div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>&#160;            __WAIT_FOR_EVENTS_ERR);</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160;    }</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160;};</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160;</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160;</div><div class="line"><a name="l03102"></a><span class="lineno"><a class="line" href="classcl_1_1_user_event.html"> 3102</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_user_event.html">UserEvent</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_event.html">Event</a></div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160;{</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03109"></a><span class="lineno"><a class="line" href="classcl_1_1_user_event.html#a4255beef279789245d402a00830c841f"> 3109</a></span>&#160;    <a class="code" href="classcl_1_1_user_event.html#a4255beef279789245d402a00830c841f">UserEvent</a>(</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>&#160;        cl_int * err = NULL)</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160;    {</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160;        cl_int error;</div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>&#160;        object_ = ::clCreateUserEvent(</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>&#160;            context(),</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>&#160;            &amp;error);</div><div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>&#160;</div><div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>&#160;        detail::errHandler(error, __CREATE_USER_EVENT_ERR);</div><div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160;            *err = error;</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>&#160;        }</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>&#160;    }</div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>&#160;</div><div class="line"><a name="l03125"></a><span class="lineno"><a class="line" href="classcl_1_1_user_event.html#a1ee5bc016d511a4fec5f23b50a70821a"> 3125</a></span>&#160;    <a class="code" href="classcl_1_1_user_event.html#a1ee5bc016d511a4fec5f23b50a70821a">UserEvent</a>() : <a class="code" href="classcl_1_1_event.html">Event</a>() { }</div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160;</div><div class="line"><a name="l03131"></a><span class="lineno"><a class="line" href="classcl_1_1_user_event.html#ad1df3a34596fee2bf6f1de6893192ae5"> 3131</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_user_event.html#ad1df3a34596fee2bf6f1de6893192ae5">setStatus</a>(cl_int status)</div><div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>&#160;    {</div><div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>&#160;            ::clSetUserEventStatus(object_,status), </div><div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>&#160;            __SET_USER_EVENT_STATUS_ERR);</div><div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>&#160;    }</div><div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>&#160;};</div><div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>&#160;</div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>&#160;<span class="keyword">inline</span> <span class="keyword">static</span> cl_int</div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>&#160;WaitForEvents(<span class="keyword">const</span> vector&lt;Event&gt;&amp; events)</div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>&#160;{</div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>&#160;    <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>&#160;        ::clWaitForEvents(</div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160;            (cl_uint) events.size(), (events.size() &gt; 0) ? (cl_event*)&amp;events.front() : NULL),</div><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160;        __WAIT_FOR_EVENTS_ERR);</div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160;}</div><div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160;</div><div class="line"><a name="l03161"></a><span class="lineno"><a class="line" href="classcl_1_1_memory.html"> 3161</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_memory.html">Memory</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper</a>&lt;cl_mem&gt;</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160;{</div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03165"></a><span class="lineno"><a class="line" href="classcl_1_1_memory.html#a9926612772ae6e016f1118ef4148da22"> 3165</a></span>&#160;    <a class="code" href="classcl_1_1_memory.html#a9926612772ae6e016f1118ef4148da22">Memory</a>() : detail::Wrapper&lt;cl_type&gt;() { }</div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160;</div><div class="line"><a name="l03178"></a><span class="lineno"><a class="line" href="classcl_1_1_memory.html#a6fa9f585a65beebcb75e41cca70ee1bb"> 3178</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_memory.html#a6fa9f585a65beebcb75e41cca70ee1bb">Memory</a>(<span class="keyword">const</span> cl_mem&amp; memory, <span class="keywordtype">bool</span> retainObject) :</div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160;        detail::Wrapper&lt;cl_type&gt;(memory, retainObject) { }</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160;</div><div class="line"><a name="l03186"></a><span class="lineno"><a class="line" href="classcl_1_1_memory.html#aa6cd4c07a111c6baa3195bee2a447dad"> 3186</a></span>&#160;    <a class="code" href="classcl_1_1_memory.html">Memory</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>&#160;    {</div><div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(rhs);</div><div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>&#160;    }</div><div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>&#160;</div><div class="line"><a name="l03195"></a><span class="lineno"><a class="line" href="classcl_1_1_memory.html#a23691d3d5e70f47538f1cde3741b0367"> 3195</a></span>&#160;    <a class="code" href="classcl_1_1_memory.html#a23691d3d5e70f47538f1cde3741b0367">Memory</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_memory.html">Memory</a>&amp; mem) : detail::Wrapper&lt;cl_type&gt;(mem) {}</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160;</div><div class="line"><a name="l03200"></a><span class="lineno"><a class="line" href="classcl_1_1_memory.html#a531dc26a246ccf5b68be4ff3968eb92d"> 3200</a></span>&#160;    <a class="code" href="classcl_1_1_memory.html">Memory</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_memory.html">Memory</a> &amp;mem)</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160;    {</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(mem);</div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160;    }</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>&#160;</div><div class="line"><a name="l03209"></a><span class="lineno"><a class="line" href="classcl_1_1_memory.html#a48a3ca6b8b6c4dbdcd6cc8e75d6503e6"> 3209</a></span>&#160;    <a class="code" href="classcl_1_1_memory.html#a48a3ca6b8b6c4dbdcd6cc8e75d6503e6">Memory</a>(<a class="code" href="classcl_1_1_memory.html">Memory</a>&amp;&amp; mem) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;</a>(std::move(mem)) {}</div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160;</div><div class="line"><a name="l03214"></a><span class="lineno"><a class="line" href="classcl_1_1_memory.html#a0f9489ffd84f7c40c1bf41462a56791a"> 3214</a></span>&#160;    <a class="code" href="classcl_1_1_memory.html">Memory</a>&amp; operator = (<a class="code" href="classcl_1_1_memory.html">Memory</a> &amp;&amp;mem)</div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160;    {</div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(std::move(mem));</div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>&#160;    }</div><div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>&#160;</div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>&#160;</div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l03223"></a><span class="lineno"><a class="line" href="classcl_1_1_memory.html#ab86d24b2a4f9a7090148fb8e77d73135"> 3223</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_memory.html#ab86d24b2a4f9a7090148fb8e77d73135">getInfo</a>(cl_mem_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>&#160;            detail::getInfo(&amp;::clGetMemObjectInfo, object_, name, param),</div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>&#160;            __GET_MEM_OBJECT_INFO_ERR);</div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>&#160;    }</div><div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>&#160;</div><div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_mem_info, name&gt;::param_type</a></div><div class="line"><a name="l03233"></a><span class="lineno"><a class="line" href="classcl_1_1_memory.html#a71a7dacb458fb6a8993c586f5c9fab6f"> 3233</a></span>&#160;    <a class="code" href="classcl_1_1_memory.html#a71a7dacb458fb6a8993c586f5c9fab6f">getInfo</a>(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>&#160;            detail::cl_mem_info, name&gt;::param_type param;</div><div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>&#160;        cl_int result = getInfo(name, &amp;param);</div><div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160;            *err = result;</div><div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>&#160;        }</div><div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160;    }</div><div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160;</div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160;</div><div class="line"><a name="l03258"></a><span class="lineno"><a class="line" href="classcl_1_1_memory.html#a15e14fda4062d21ad354126a599a6111"> 3258</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_memory.html#a15e14fda4062d21ad354126a599a6111">setDestructorCallback</a>(</div><div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>&#160;        <span class="keywordtype">void</span> (CL_CALLBACK * pfn_notify)(cl_mem, <span class="keywordtype">void</span> *),        </div><div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>&#160;        <span class="keywordtype">void</span> * user_data = NULL)</div><div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>&#160;    {</div><div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>&#160;            ::clSetMemObjectDestructorCallback(</div><div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>&#160;                object_,</div><div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>&#160;                pfn_notify,</div><div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>&#160;                user_data), </div><div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>&#160;            __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR);</div><div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>&#160;    }</div><div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>&#160;</div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>&#160;};</div><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160;</div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160;<span class="comment">// Pre-declare copy functions</span></div><div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_buffer.html">Buffer</a>;</div><div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160;cl_int <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">copy</a>( IteratorType startIterator, IteratorType endIterator, <a class="code" href="classcl_1_1_buffer.html">cl::Buffer</a> &amp;buffer );</div><div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160;cl_int <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">copy</a>( <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">cl::Buffer</a> &amp;buffer, IteratorType startIterator, IteratorType endIterator );</div><div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160;cl_int <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">copy</a>( <span class="keyword">const</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, IteratorType startIterator, IteratorType endIterator, <a class="code" href="classcl_1_1_buffer.html">cl::Buffer</a> &amp;buffer );</div><div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>&#160;cl_int <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">copy</a>( <span class="keyword">const</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">cl::Buffer</a> &amp;buffer, IteratorType startIterator, IteratorType endIterator );</div><div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160;</div><div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160;</div><div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160;<span class="keyword">namespace </span>detail</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160;{</div><div class="line"><a name="l03288"></a><span class="lineno"><a class="line" href="classcl_1_1detail_1_1_s_v_m_trait_null.html"> 3288</a></span>&#160;    <span class="keyword">class </span><a class="code" href="classcl_1_1detail_1_1_s_v_m_trait_null.html">SVMTraitNull</a></div><div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160;    {</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160;        <span class="keyword">static</span> cl_svm_mem_flags getSVMMemFlags()</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160;        {</div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>&#160;            <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160;        }</div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160;    };</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160;} <span class="comment">// namespace detail</span></div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>&#160;</div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Trait = detail::SVMTraitNull&gt;</div><div class="line"><a name="l03299"></a><span class="lineno"><a class="line" href="classcl_1_1_s_v_m_trait_read_write.html"> 3299</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_s_v_m_trait_read_write.html">SVMTraitReadWrite</a></div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>&#160;{</div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>&#160;    <span class="keyword">static</span> cl_svm_mem_flags getSVMMemFlags()</div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>&#160;    {</div><div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>&#160;        <span class="keywordflow">return</span> CL_MEM_READ_WRITE |</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>&#160;            Trait::getSVMMemFlags();</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160;    }</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160;};</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>&#160;</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Trait = detail::SVMTraitNull&gt;</div><div class="line"><a name="l03310"></a><span class="lineno"><a class="line" href="classcl_1_1_s_v_m_trait_read_only.html"> 3310</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_s_v_m_trait_read_only.html">SVMTraitReadOnly</a></div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160;{</div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160;    <span class="keyword">static</span> cl_svm_mem_flags getSVMMemFlags()</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>&#160;    {</div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160;        <span class="keywordflow">return</span> CL_MEM_READ_ONLY |</div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>&#160;            Trait::getSVMMemFlags();</div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160;    }</div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160;};</div><div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160;</div><div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Trait = detail::SVMTraitNull&gt;</div><div class="line"><a name="l03321"></a><span class="lineno"><a class="line" href="classcl_1_1_s_v_m_trait_write_only.html"> 3321</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_s_v_m_trait_write_only.html">SVMTraitWriteOnly</a></div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160;{</div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160;    <span class="keyword">static</span> cl_svm_mem_flags getSVMMemFlags()</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160;    {</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160;        <span class="keywordflow">return</span> CL_MEM_WRITE_ONLY |</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160;            Trait::getSVMMemFlags();</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>&#160;    }</div><div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>&#160;};</div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160;</div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Trait = SVMTraitReadWrite&lt;&gt;&gt;</div><div class="line"><a name="l03332"></a><span class="lineno"><a class="line" href="classcl_1_1_s_v_m_trait_coarse.html"> 3332</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_s_v_m_trait_coarse.html">SVMTraitCoarse</a></div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160;{</div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160;    <span class="keyword">static</span> cl_svm_mem_flags getSVMMemFlags()</div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160;    {</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>&#160;        <span class="keywordflow">return</span> Trait::getSVMMemFlags();</div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>&#160;    }</div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160;};</div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160;</div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Trait = SVMTraitReadWrite&lt;&gt;&gt;</div><div class="line"><a name="l03342"></a><span class="lineno"><a class="line" href="classcl_1_1_s_v_m_trait_fine.html"> 3342</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_s_v_m_trait_fine.html">SVMTraitFine</a></div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>&#160;{</div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160;    <span class="keyword">static</span> cl_svm_mem_flags getSVMMemFlags()</div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160;    {</div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160;        <span class="keywordflow">return</span> CL_MEM_SVM_FINE_GRAIN_BUFFER |</div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160;            Trait::getSVMMemFlags();</div><div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>&#160;    }</div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>&#160;};</div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160;</div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> Trait = SVMTraitReadWrite&lt;&gt;&gt;</div><div class="line"><a name="l03353"></a><span class="lineno"><a class="line" href="classcl_1_1_s_v_m_trait_atomic.html"> 3353</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_s_v_m_trait_atomic.html">SVMTraitAtomic</a></div><div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160;{</div><div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160;    <span class="keyword">static</span> cl_svm_mem_flags getSVMMemFlags()</div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160;    {</div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160;        <span class="keywordflow">return</span></div><div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160;            CL_MEM_SVM_FINE_GRAIN_BUFFER |</div><div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160;            CL_MEM_SVM_ATOMICS |</div><div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160;            Trait::getSVMMemFlags();</div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160;    }</div><div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>&#160;};</div><div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>&#160;</div><div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160;<span class="comment">// Pre-declare SVM map function</span></div><div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#abb2c4e45814ea569a27c39d37471b2a4">enqueueMapSVM</a>(</div><div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160;    T* ptr,</div><div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160;    cl_bool blocking,</div><div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160;    cl_map_flags flags,</div><div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160;    size_type size,</div><div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL);</div><div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160;</div><div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> SVMTrait&gt;</div><div class="line"><a name="l03387"></a><span class="lineno"><a class="line" href="classcl_1_1_s_v_m_allocator.html"> 3387</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a> {</div><div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>&#160;    <a class="code" href="classcl_1_1_context.html">Context</a> context_;</div><div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>&#160;</div><div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>&#160;    <span class="keyword">typedef</span> T value_type;</div><div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>&#160;    <span class="keyword">typedef</span> value_type* pointer;</div><div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160;    <span class="keyword">typedef</span> <span class="keyword">const</span> value_type* const_pointer;</div><div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>&#160;    <span class="keyword">typedef</span> value_type&amp; reference;</div><div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>&#160;    <span class="keyword">typedef</span> <span class="keyword">const</span> value_type&amp; const_reference;</div><div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>&#160;    <span class="keyword">typedef</span> std::size_t size_type;</div><div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>&#160;    <span class="keyword">typedef</span> std::ptrdiff_t difference_type;</div><div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>&#160;</div><div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> U&gt;</div><div class="line"><a name="l03401"></a><span class="lineno"><a class="line" href="structcl_1_1_s_v_m_allocator_1_1rebind.html"> 3401</a></span>&#160;    <span class="keyword">struct </span><a class="code" href="structcl_1_1_s_v_m_allocator_1_1rebind.html">rebind</a></div><div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>&#160;    {</div><div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>&#160;        <span class="keyword">typedef</span> <a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator&lt;U, SVMTrait&gt;</a> <a class="code" href="classcl_1_1_s_v_m_allocator.html">other</a>;</div><div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>&#160;    };</div><div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>&#160;</div><div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> U, <span class="keyword">typename</span> V&gt;</div><div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a>;</div><div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160;</div><div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160;    <a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a>() :</div><div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>&#160;        context_(<a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">Context::getDefault</a>())</div><div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160;    {</div><div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>&#160;    }</div><div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>&#160;</div><div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a>(<a class="code" href="classcl_1_1_context.html">cl::Context</a> context) :</div><div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>&#160;        context_(context)</div><div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>&#160;    {</div><div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160;    }</div><div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160;</div><div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160;</div><div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>&#160;    <a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a> &amp;<a class="code" href="classcl_1_1_s_v_m_allocator.html">other</a>) :</div><div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>&#160;        context_(other.context_)</div><div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>&#160;    {</div><div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>&#160;    }</div><div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>&#160;</div><div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> U&gt;</div><div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>&#160;    <a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator&lt;U, SVMTrait&gt;</a> &amp;other) :</div><div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>&#160;        context_(other.context_)</div><div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>&#160;    {</div><div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>&#160;    }</div><div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>&#160;</div><div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>&#160;    ~<a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a>()</div><div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>&#160;    {</div><div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>&#160;    }</div><div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>&#160;</div><div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>&#160;    pointer address(reference r) CL_HPP_NOEXCEPT_</div><div class="line"><a name="l03436"></a><span class="lineno"> 3436</span>&#160;    {</div><div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>&#160;        <span class="keywordflow">return</span> std::addressof(r);</div><div class="line"><a name="l03438"></a><span class="lineno"> 3438</span>&#160;    }</div><div class="line"><a name="l03439"></a><span class="lineno"> 3439</span>&#160;</div><div class="line"><a name="l03440"></a><span class="lineno"> 3440</span>&#160;    const_pointer address(const_reference r) CL_HPP_NOEXCEPT_</div><div class="line"><a name="l03441"></a><span class="lineno"> 3441</span>&#160;    {</div><div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>&#160;        <span class="keywordflow">return</span> std::addressof(r);</div><div class="line"><a name="l03443"></a><span class="lineno"> 3443</span>&#160;    }</div><div class="line"><a name="l03444"></a><span class="lineno"> 3444</span>&#160;</div><div class="line"><a name="l03451"></a><span class="lineno"><a class="line" href="classcl_1_1_s_v_m_allocator.html#a44858d70971c7801aa62d7a64d18df00"> 3451</a></span>&#160;    pointer <a class="code" href="classcl_1_1_s_v_m_allocator.html#a44858d70971c7801aa62d7a64d18df00">allocate</a>(</div><div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>&#160;        size_type size,</div><div class="line"><a name="l03453"></a><span class="lineno"> 3453</span>&#160;        <span class="keyword">typename</span> <a class="code" href="classcl_1_1_s_v_m_allocator.html">cl::SVMAllocator&lt;void, SVMTrait&gt;::const_pointer</a> = 0)</div><div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>&#160;    {</div><div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>&#160;        <span class="comment">// Allocate memory with default alignment matching the size of the type</span></div><div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>&#160;        <span class="keywordtype">void</span>* voidPointer =</div><div class="line"><a name="l03457"></a><span class="lineno"> 3457</span>&#160;            clSVMAlloc(</div><div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>&#160;            context_(),</div><div class="line"><a name="l03459"></a><span class="lineno"> 3459</span>&#160;            SVMTrait::getSVMMemFlags(),</div><div class="line"><a name="l03460"></a><span class="lineno"> 3460</span>&#160;            size*<span class="keyword">sizeof</span>(T),</div><div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>&#160;            0);</div><div class="line"><a name="l03462"></a><span class="lineno"> 3462</span>&#160;        pointer retValue = <span class="keyword">reinterpret_cast&lt;</span>pointer<span class="keyword">&gt;</span>(</div><div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>&#160;            voidPointer);</div><div class="line"><a name="l03464"></a><span class="lineno"> 3464</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l03465"></a><span class="lineno"> 3465</span>&#160;        <span class="keywordflow">if</span> (!retValue) {</div><div class="line"><a name="l03466"></a><span class="lineno"> 3466</span>&#160;            std::bad_alloc excep;</div><div class="line"><a name="l03467"></a><span class="lineno"> 3467</span>&#160;            <span class="keywordflow">throw</span> excep;</div><div class="line"><a name="l03468"></a><span class="lineno"> 3468</span>&#160;        }</div><div class="line"><a name="l03469"></a><span class="lineno"> 3469</span>&#160;<span class="preprocessor">#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l03470"></a><span class="lineno"> 3470</span>&#160;</div><div class="line"><a name="l03471"></a><span class="lineno"> 3471</span>&#160;        <span class="comment">// If allocation was coarse-grained then map it</span></div><div class="line"><a name="l03472"></a><span class="lineno"> 3472</span>&#160;        <span class="keywordflow">if</span> (!(SVMTrait::getSVMMemFlags() &amp; CL_MEM_SVM_FINE_GRAIN_BUFFER)) {</div><div class="line"><a name="l03473"></a><span class="lineno"> 3473</span>&#160;            cl_int err = <a class="code" href="namespacecl.html#abb2c4e45814ea569a27c39d37471b2a4">enqueueMapSVM</a>(retValue, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, size*<span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l03474"></a><span class="lineno"> 3474</span>&#160;            <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l03475"></a><span class="lineno"> 3475</span>&#160;                std::bad_alloc excep;</div><div class="line"><a name="l03476"></a><span class="lineno"> 3476</span>&#160;                <span class="keywordflow">throw</span> excep;</div><div class="line"><a name="l03477"></a><span class="lineno"> 3477</span>&#160;            }</div><div class="line"><a name="l03478"></a><span class="lineno"> 3478</span>&#160;        }</div><div class="line"><a name="l03479"></a><span class="lineno"> 3479</span>&#160;</div><div class="line"><a name="l03480"></a><span class="lineno"> 3480</span>&#160;        <span class="comment">// If exceptions disabled, return null pointer from allocator</span></div><div class="line"><a name="l03481"></a><span class="lineno"> 3481</span>&#160;        <span class="keywordflow">return</span> retValue;</div><div class="line"><a name="l03482"></a><span class="lineno"> 3482</span>&#160;    }</div><div class="line"><a name="l03483"></a><span class="lineno"> 3483</span>&#160;</div><div class="line"><a name="l03484"></a><span class="lineno"> 3484</span>&#160;    <span class="keywordtype">void</span> deallocate(pointer p, size_type)</div><div class="line"><a name="l03485"></a><span class="lineno"> 3485</span>&#160;    {</div><div class="line"><a name="l03486"></a><span class="lineno"> 3486</span>&#160;        clSVMFree(context_(), p);</div><div class="line"><a name="l03487"></a><span class="lineno"> 3487</span>&#160;    }</div><div class="line"><a name="l03488"></a><span class="lineno"> 3488</span>&#160;</div><div class="line"><a name="l03493"></a><span class="lineno"><a class="line" href="classcl_1_1_s_v_m_allocator.html#aec263261a88fb1ec64a3e5f9a4ef41a7"> 3493</a></span>&#160;    size_type <a class="code" href="classcl_1_1_s_v_m_allocator.html#aec263261a88fb1ec64a3e5f9a4ef41a7">max_size</a>() const CL_HPP_NOEXCEPT_</div><div class="line"><a name="l03494"></a><span class="lineno"> 3494</span>&#160;    {</div><div class="line"><a name="l03495"></a><span class="lineno"> 3495</span>&#160;        size_type maxSize = std::numeric_limits&lt;size_type&gt;::max() / <span class="keyword">sizeof</span>(T);</div><div class="line"><a name="l03496"></a><span class="lineno"> 3496</span>&#160;</div><div class="line"><a name="l03497"></a><span class="lineno"> 3497</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a> &amp;d : context_.<a class="code" href="classcl_1_1_context.html#a979d15f9228089af2a657a523b1186e8">getInfo</a>&lt;CL_CONTEXT_DEVICES&gt;()) {</div><div class="line"><a name="l03498"></a><span class="lineno"> 3498</span>&#160;            maxSize = std::min(</div><div class="line"><a name="l03499"></a><span class="lineno"> 3499</span>&#160;                maxSize, </div><div class="line"><a name="l03500"></a><span class="lineno"> 3500</span>&#160;                static_cast&lt;size_type&gt;(d.getInfo&lt;CL_DEVICE_MAX_MEM_ALLOC_SIZE&gt;()));</div><div class="line"><a name="l03501"></a><span class="lineno"> 3501</span>&#160;        }</div><div class="line"><a name="l03502"></a><span class="lineno"> 3502</span>&#160;</div><div class="line"><a name="l03503"></a><span class="lineno"> 3503</span>&#160;        <span class="keywordflow">return</span> maxSize;</div><div class="line"><a name="l03504"></a><span class="lineno"> 3504</span>&#160;    }</div><div class="line"><a name="l03505"></a><span class="lineno"> 3505</span>&#160;</div><div class="line"><a name="l03506"></a><span class="lineno"> 3506</span>&#160;    <span class="keyword">template</span>&lt; <span class="keyword">class </span>U, <span class="keyword">class</span>... Args &gt;</div><div class="line"><a name="l03507"></a><span class="lineno"> 3507</span>&#160;    <span class="keywordtype">void</span> construct(U* p, Args&amp;&amp;... args)</div><div class="line"><a name="l03508"></a><span class="lineno"> 3508</span>&#160;    {</div><div class="line"><a name="l03509"></a><span class="lineno"> 3509</span>&#160;        <span class="keyword">new</span>(p)T(args...);</div><div class="line"><a name="l03510"></a><span class="lineno"> 3510</span>&#160;    }</div><div class="line"><a name="l03511"></a><span class="lineno"> 3511</span>&#160;</div><div class="line"><a name="l03512"></a><span class="lineno"> 3512</span>&#160;    <span class="keyword">template</span>&lt; <span class="keyword">class</span> U &gt;</div><div class="line"><a name="l03513"></a><span class="lineno"> 3513</span>&#160;    <span class="keywordtype">void</span> destroy(U* p)</div><div class="line"><a name="l03514"></a><span class="lineno"> 3514</span>&#160;    {</div><div class="line"><a name="l03515"></a><span class="lineno"> 3515</span>&#160;        p-&gt;~U();</div><div class="line"><a name="l03516"></a><span class="lineno"> 3516</span>&#160;    }</div><div class="line"><a name="l03517"></a><span class="lineno"> 3517</span>&#160;</div><div class="line"><a name="l03521"></a><span class="lineno"><a class="line" href="classcl_1_1_s_v_m_allocator.html#abaa89b1232891a728d3530dbd71e7cb6"> 3521</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classcl_1_1_s_v_m_allocator.html#abaa89b1232891a728d3530dbd71e7cb6">operator==</a>(<a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a> <span class="keyword">const</span>&amp; rhs)</div><div class="line"><a name="l03522"></a><span class="lineno"> 3522</span>&#160;    {</div><div class="line"><a name="l03523"></a><span class="lineno"> 3523</span>&#160;        <span class="keywordflow">return</span> (context_==rhs.context_);</div><div class="line"><a name="l03524"></a><span class="lineno"> 3524</span>&#160;    }</div><div class="line"><a name="l03525"></a><span class="lineno"> 3525</span>&#160;</div><div class="line"><a name="l03526"></a><span class="lineno"> 3526</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator!=(<a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a> <span class="keyword">const</span>&amp; a)</div><div class="line"><a name="l03527"></a><span class="lineno"> 3527</span>&#160;    {</div><div class="line"><a name="l03528"></a><span class="lineno"> 3528</span>&#160;        <span class="keywordflow">return</span> !operator==(a);</div><div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>&#160;    }</div><div class="line"><a name="l03530"></a><span class="lineno"> 3530</span>&#160;}; <span class="comment">// class SVMAllocator        return cl::pointer&lt;T&gt;(tmp, detail::Deleter&lt;T, Alloc&gt;{alloc, copies});</span></div><div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>&#160;</div><div class="line"><a name="l03532"></a><span class="lineno"> 3532</span>&#160;</div><div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> SVMTrait&gt;</div><div class="line"><a name="l03534"></a><span class="lineno"><a class="line" href="classcl_1_1_s_v_m_allocator_3_01void_00_01_s_v_m_trait_01_4.html"> 3534</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a>&lt;void, SVMTrait&gt; {</div><div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03536"></a><span class="lineno"> 3536</span>&#160;    <span class="keyword">typedef</span> <span class="keywordtype">void</span> value_type;</div><div class="line"><a name="l03537"></a><span class="lineno"> 3537</span>&#160;    <span class="keyword">typedef</span> value_type* pointer;</div><div class="line"><a name="l03538"></a><span class="lineno"> 3538</span>&#160;    <span class="keyword">typedef</span> <span class="keyword">const</span> value_type* const_pointer;</div><div class="line"><a name="l03539"></a><span class="lineno"> 3539</span>&#160;</div><div class="line"><a name="l03540"></a><span class="lineno"> 3540</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> U&gt;</div><div class="line"><a name="l03541"></a><span class="lineno"><a class="line" href="structcl_1_1_s_v_m_allocator_3_01void_00_01_s_v_m_trait_01_4_1_1rebind.html"> 3541</a></span>&#160;    <span class="keyword">struct </span>rebind</div><div class="line"><a name="l03542"></a><span class="lineno"> 3542</span>&#160;    {</div><div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>&#160;        <span class="keyword">typedef</span> <a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator&lt;U, SVMTrait&gt;</a> <a class="code" href="classcl_1_1_s_v_m_allocator.html">other</a>;</div><div class="line"><a name="l03544"></a><span class="lineno"> 3544</span>&#160;    };</div><div class="line"><a name="l03545"></a><span class="lineno"> 3545</span>&#160;</div><div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> U, <span class="keyword">typename</span> V&gt;</div><div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator</a>;</div><div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>&#160;};</div><div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>&#160;</div><div class="line"><a name="l03550"></a><span class="lineno"> 3550</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_NO_STD_UNIQUE_PTR)</span></div><div class="line"><a name="l03551"></a><span class="lineno"> 3551</span>&#160;<span class="keyword">namespace </span>detail</div><div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>&#160;{</div><div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">class</span> Alloc&gt;</div><div class="line"><a name="l03554"></a><span class="lineno"><a class="line" href="classcl_1_1detail_1_1_deleter.html"> 3554</a></span>&#160;    <span class="keyword">class </span><a class="code" href="classcl_1_1detail_1_1_deleter.html">Deleter</a> {</div><div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>&#160;        Alloc alloc_;</div><div class="line"><a name="l03557"></a><span class="lineno"> 3557</span>&#160;        size_type copies_;</div><div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>&#160;</div><div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>&#160;        <span class="keyword">typedef</span> <span class="keyword">typename</span> std::allocator_traits&lt;Alloc&gt;::pointer pointer;</div><div class="line"><a name="l03561"></a><span class="lineno"> 3561</span>&#160;</div><div class="line"><a name="l03562"></a><span class="lineno"> 3562</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_deleter.html">Deleter</a>(<span class="keyword">const</span> Alloc &amp;alloc, size_type copies) : alloc_{ alloc }, copies_{ copies }</div><div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>&#160;        {</div><div class="line"><a name="l03564"></a><span class="lineno"> 3564</span>&#160;        }</div><div class="line"><a name="l03565"></a><span class="lineno"> 3565</span>&#160;</div><div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>&#160;        <span class="keywordtype">void</span> operator()(pointer ptr)<span class="keyword"> const </span>{</div><div class="line"><a name="l03567"></a><span class="lineno"> 3567</span>&#160;            Alloc tmpAlloc{ alloc_ };</div><div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>&#160;            std::allocator_traits&lt;Alloc&gt;::destroy(tmpAlloc, std::addressof(*ptr));</div><div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>&#160;            std::allocator_traits&lt;Alloc&gt;::deallocate(tmpAlloc, ptr, copies_);</div><div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>&#160;        }</div><div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>&#160;    };</div><div class="line"><a name="l03572"></a><span class="lineno"> 3572</span>&#160;} <span class="comment">// namespace detail</span></div><div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>&#160;</div><div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class </span>T, <span class="keyword">class </span>Alloc, <span class="keyword">class</span>... Args&gt;</div><div class="line"><a name="l03581"></a><span class="lineno"><a class="line" href="namespacecl.html#a6569925e399ff834fc45bde4a9d6f7a1"> 3581</a></span>&#160;cl::pointer&lt;T, detail::Deleter&lt;Alloc&gt;&gt; <a class="code" href="namespacecl.html#a6569925e399ff834fc45bde4a9d6f7a1">allocate_pointer</a>(<span class="keyword">const</span> Alloc &amp;alloc_, Args&amp;&amp;... args)</div><div class="line"><a name="l03582"></a><span class="lineno"> 3582</span>&#160;{</div><div class="line"><a name="l03583"></a><span class="lineno"> 3583</span>&#160;    Alloc alloc(alloc_);</div><div class="line"><a name="l03584"></a><span class="lineno"> 3584</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> size_type copies = 1;</div><div class="line"><a name="l03585"></a><span class="lineno"> 3585</span>&#160;</div><div class="line"><a name="l03586"></a><span class="lineno"> 3586</span>&#160;    <span class="comment">// Ensure that creation of the management block and the</span></div><div class="line"><a name="l03587"></a><span class="lineno"> 3587</span>&#160;    <span class="comment">// object are dealt with separately such that we only provide a deleter</span></div><div class="line"><a name="l03588"></a><span class="lineno"> 3588</span>&#160;</div><div class="line"><a name="l03589"></a><span class="lineno"> 3589</span>&#160;    T* tmp = std::allocator_traits&lt;Alloc&gt;::allocate(alloc, copies);</div><div class="line"><a name="l03590"></a><span class="lineno"> 3590</span>&#160;    <span class="keywordflow">if</span> (!tmp) {</div><div class="line"><a name="l03591"></a><span class="lineno"> 3591</span>&#160;        std::bad_alloc excep;</div><div class="line"><a name="l03592"></a><span class="lineno"> 3592</span>&#160;        <span class="keywordflow">throw</span> excep;</div><div class="line"><a name="l03593"></a><span class="lineno"> 3593</span>&#160;    }</div><div class="line"><a name="l03594"></a><span class="lineno"> 3594</span>&#160;    <span class="keywordflow">try</span> {</div><div class="line"><a name="l03595"></a><span class="lineno"> 3595</span>&#160;        std::allocator_traits&lt;Alloc&gt;::construct(</div><div class="line"><a name="l03596"></a><span class="lineno"> 3596</span>&#160;            alloc,</div><div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>&#160;            std::addressof(*tmp),</div><div class="line"><a name="l03598"></a><span class="lineno"> 3598</span>&#160;            std::forward&lt;Args&gt;(args)...);</div><div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>&#160;</div><div class="line"><a name="l03600"></a><span class="lineno"> 3600</span>&#160;        <span class="keywordflow">return</span> cl::pointer&lt;T, detail::Deleter&lt;Alloc&gt;&gt;(tmp, <a class="code" href="classcl_1_1detail_1_1_deleter.html">detail::Deleter&lt;Alloc&gt;</a>{alloc, copies});</div><div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>&#160;    }</div><div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>&#160;    <span class="keywordflow">catch</span> (std::bad_alloc b)</div><div class="line"><a name="l03603"></a><span class="lineno"> 3603</span>&#160;    {</div><div class="line"><a name="l03604"></a><span class="lineno"> 3604</span>&#160;        std::allocator_traits&lt;Alloc&gt;::deallocate(alloc, tmp, copies);</div><div class="line"><a name="l03605"></a><span class="lineno"> 3605</span>&#160;        <span class="keywordflow">throw</span>;</div><div class="line"><a name="l03606"></a><span class="lineno"> 3606</span>&#160;    }</div><div class="line"><a name="l03607"></a><span class="lineno"> 3607</span>&#160;}</div><div class="line"><a name="l03608"></a><span class="lineno"> 3608</span>&#160;</div><div class="line"><a name="l03609"></a><span class="lineno"> 3609</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">class </span>T, <span class="keyword">class </span>SVMTrait, <span class="keyword">class</span>... Args &gt;</div><div class="line"><a name="l03610"></a><span class="lineno"> 3610</span>&#160;cl::pointer&lt;T, detail::Deleter&lt;SVMAllocator&lt;T, SVMTrait&gt;&gt;&gt; allocate_svm(Args... args)</div><div class="line"><a name="l03611"></a><span class="lineno"> 3611</span>&#160;{</div><div class="line"><a name="l03612"></a><span class="lineno"> 3612</span>&#160;    <a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator&lt;T, SVMTrait&gt;</a> alloc;</div><div class="line"><a name="l03613"></a><span class="lineno"> 3613</span>&#160;    <span class="keywordflow">return</span> cl::allocate_pointer&lt;T&gt;(alloc, args...);</div><div class="line"><a name="l03614"></a><span class="lineno"> 3614</span>&#160;}</div><div class="line"><a name="l03615"></a><span class="lineno"> 3615</span>&#160;</div><div class="line"><a name="l03616"></a><span class="lineno"> 3616</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">class </span>T, <span class="keyword">class </span>SVMTrait, <span class="keyword">class</span>... Args &gt;</div><div class="line"><a name="l03617"></a><span class="lineno"> 3617</span>&#160;cl::pointer&lt;T, detail::Deleter&lt;SVMAllocator&lt;T, SVMTrait&gt;&gt;&gt; allocate_svm(<span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">cl::Context</a> &amp;c, Args... args)</div><div class="line"><a name="l03618"></a><span class="lineno"> 3618</span>&#160;{</div><div class="line"><a name="l03619"></a><span class="lineno"> 3619</span>&#160;    <a class="code" href="classcl_1_1_s_v_m_allocator.html">SVMAllocator&lt;T, SVMTrait&gt;</a> alloc(c);</div><div class="line"><a name="l03620"></a><span class="lineno"> 3620</span>&#160;    <span class="keywordflow">return</span> cl::allocate_pointer&lt;T&gt;(alloc, args...);</div><div class="line"><a name="l03621"></a><span class="lineno"> 3621</span>&#160;}</div><div class="line"><a name="l03622"></a><span class="lineno"> 3622</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_HPP_NO_STD_UNIQUE_PTR)</span></div><div class="line"><a name="l03623"></a><span class="lineno"> 3623</span>&#160;</div><div class="line"><a name="l03627"></a><span class="lineno"> 3627</span>&#160;<span class="keyword">template</span> &lt; <span class="keyword">class</span> T &gt;</div><div class="line"><a name="l03628"></a><span class="lineno"><a class="line" href="namespacecl.html#abd957be3ad58ee2932a99ed8bc6cc049"> 3628</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacecl.html#abd957be3ad58ee2932a99ed8bc6cc049">coarse_svm_vector</a> = vector&lt;T, cl::SVMAllocator&lt;int, cl::SVMTraitCoarse&lt;&gt;&gt;&gt;;</div><div class="line"><a name="l03629"></a><span class="lineno"> 3629</span>&#160;</div><div class="line"><a name="l03633"></a><span class="lineno"> 3633</span>&#160;<span class="keyword">template</span> &lt; <span class="keyword">class</span> T &gt;</div><div class="line"><a name="l03634"></a><span class="lineno"><a class="line" href="namespacecl.html#a048aa194c540d1a3178054256db082b9"> 3634</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacecl.html#a048aa194c540d1a3178054256db082b9">fine_svm_vector</a> = vector&lt;T, cl::SVMAllocator&lt;int, cl::SVMTraitFine&lt;&gt;&gt;&gt;;</div><div class="line"><a name="l03635"></a><span class="lineno"> 3635</span>&#160;</div><div class="line"><a name="l03639"></a><span class="lineno"> 3639</span>&#160;<span class="keyword">template</span> &lt; <span class="keyword">class</span> T &gt;</div><div class="line"><a name="l03640"></a><span class="lineno"><a class="line" href="namespacecl.html#aebc48a598e41f0cb98397460ca04ffb6"> 3640</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacecl.html#aebc48a598e41f0cb98397460ca04ffb6">atomic_svm_vector</a> = vector&lt;T, cl::SVMAllocator&lt;int, cl::SVMTraitAtomic&lt;&gt;&gt;&gt;;</div><div class="line"><a name="l03641"></a><span class="lineno"> 3641</span>&#160;</div><div class="line"><a name="l03642"></a><span class="lineno"> 3642</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l03643"></a><span class="lineno"> 3643</span>&#160;</div><div class="line"><a name="l03644"></a><span class="lineno"> 3644</span>&#160;</div><div class="line"><a name="l03651"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html"> 3651</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_buffer.html">Buffer</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_memory.html">Memory</a></div><div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>&#160;{</div><div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>&#160;</div><div class="line"><a name="l03662"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#a66ee6c9c837b5f74f02bef8f90459b5c"> 3662</a></span>&#160;    <a class="code" href="classcl_1_1_buffer.html#a66ee6c9c837b5f74f02bef8f90459b5c">Buffer</a>(</div><div class="line"><a name="l03663"></a><span class="lineno"> 3663</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l03664"></a><span class="lineno"> 3664</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l03665"></a><span class="lineno"> 3665</span>&#160;        size_type size,</div><div class="line"><a name="l03666"></a><span class="lineno"> 3666</span>&#160;        <span class="keywordtype">void</span>* host_ptr = NULL,</div><div class="line"><a name="l03667"></a><span class="lineno"> 3667</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>&#160;    {</div><div class="line"><a name="l03669"></a><span class="lineno"> 3669</span>&#160;        cl_int error;</div><div class="line"><a name="l03670"></a><span class="lineno"> 3670</span>&#160;        object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &amp;error);</div><div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>&#160;</div><div class="line"><a name="l03672"></a><span class="lineno"> 3672</span>&#160;        detail::errHandler(error, __CREATE_BUFFER_ERR);</div><div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l03674"></a><span class="lineno"> 3674</span>&#160;            *err = error;</div><div class="line"><a name="l03675"></a><span class="lineno"> 3675</span>&#160;        }</div><div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>&#160;    }</div><div class="line"><a name="l03677"></a><span class="lineno"> 3677</span>&#160;</div><div class="line"><a name="l03687"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#ac9eaf7f65478faefa7053ab6c9f1e16d"> 3687</a></span>&#160;    <a class="code" href="classcl_1_1_buffer.html#ac9eaf7f65478faefa7053ab6c9f1e16d">Buffer</a>(</div><div class="line"><a name="l03688"></a><span class="lineno"> 3688</span>&#160;         cl_mem_flags flags,</div><div class="line"><a name="l03689"></a><span class="lineno"> 3689</span>&#160;        size_type size,</div><div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>&#160;        <span class="keywordtype">void</span>* host_ptr = NULL,</div><div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l03692"></a><span class="lineno"> 3692</span>&#160;    {</div><div class="line"><a name="l03693"></a><span class="lineno"> 3693</span>&#160;        cl_int error;</div><div class="line"><a name="l03694"></a><span class="lineno"> 3694</span>&#160;</div><div class="line"><a name="l03695"></a><span class="lineno"> 3695</span>&#160;        <a class="code" href="classcl_1_1_context.html">Context</a> context = <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">Context::getDefault</a>(err);</div><div class="line"><a name="l03696"></a><span class="lineno"> 3696</span>&#160;</div><div class="line"><a name="l03697"></a><span class="lineno"> 3697</span>&#160;        object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &amp;error);</div><div class="line"><a name="l03698"></a><span class="lineno"> 3698</span>&#160;</div><div class="line"><a name="l03699"></a><span class="lineno"> 3699</span>&#160;        detail::errHandler(error, __CREATE_BUFFER_ERR);</div><div class="line"><a name="l03700"></a><span class="lineno"> 3700</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l03701"></a><span class="lineno"> 3701</span>&#160;            *err = error;</div><div class="line"><a name="l03702"></a><span class="lineno"> 3702</span>&#160;        }</div><div class="line"><a name="l03703"></a><span class="lineno"> 3703</span>&#160;    }</div><div class="line"><a name="l03704"></a><span class="lineno"> 3704</span>&#160;</div><div class="line"><a name="l03710"></a><span class="lineno"> 3710</span>&#160;    <span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l03711"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#aadd3663801107fabb88238565c55ba16"> 3711</a></span>&#160;    <a class="code" href="classcl_1_1_buffer.html#aadd3663801107fabb88238565c55ba16">Buffer</a>(</div><div class="line"><a name="l03712"></a><span class="lineno"> 3712</span>&#160;        IteratorType startIterator,</div><div class="line"><a name="l03713"></a><span class="lineno"> 3713</span>&#160;        IteratorType endIterator,</div><div class="line"><a name="l03714"></a><span class="lineno"> 3714</span>&#160;        <span class="keywordtype">bool</span> readOnly,</div><div class="line"><a name="l03715"></a><span class="lineno"> 3715</span>&#160;        <span class="keywordtype">bool</span> useHostPtr = <span class="keyword">false</span>,</div><div class="line"><a name="l03716"></a><span class="lineno"> 3716</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l03717"></a><span class="lineno"> 3717</span>&#160;    {</div><div class="line"><a name="l03718"></a><span class="lineno"> 3718</span>&#160;        <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits&lt;IteratorType&gt;::value_type DataType;</div><div class="line"><a name="l03719"></a><span class="lineno"> 3719</span>&#160;        cl_int error;</div><div class="line"><a name="l03720"></a><span class="lineno"> 3720</span>&#160;</div><div class="line"><a name="l03721"></a><span class="lineno"> 3721</span>&#160;        cl_mem_flags flags = 0;</div><div class="line"><a name="l03722"></a><span class="lineno"> 3722</span>&#160;        <span class="keywordflow">if</span>( readOnly ) {</div><div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>&#160;            flags |= CL_MEM_READ_ONLY;</div><div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>&#160;        }</div><div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>&#160;        <span class="keywordflow">else</span> {</div><div class="line"><a name="l03726"></a><span class="lineno"> 3726</span>&#160;            flags |= CL_MEM_READ_WRITE;</div><div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>&#160;        }</div><div class="line"><a name="l03728"></a><span class="lineno"> 3728</span>&#160;        <span class="keywordflow">if</span>( useHostPtr ) {</div><div class="line"><a name="l03729"></a><span class="lineno"> 3729</span>&#160;            flags |= CL_MEM_USE_HOST_PTR;</div><div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>&#160;        }</div><div class="line"><a name="l03731"></a><span class="lineno"> 3731</span>&#160;        </div><div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>&#160;        size_type size = <span class="keyword">sizeof</span>(DataType)*(endIterator - startIterator);</div><div class="line"><a name="l03733"></a><span class="lineno"> 3733</span>&#160;</div><div class="line"><a name="l03734"></a><span class="lineno"> 3734</span>&#160;        <a class="code" href="classcl_1_1_context.html">Context</a> context = <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">Context::getDefault</a>(err);</div><div class="line"><a name="l03735"></a><span class="lineno"> 3735</span>&#160;</div><div class="line"><a name="l03736"></a><span class="lineno"> 3736</span>&#160;        <span class="keywordflow">if</span>( useHostPtr ) {</div><div class="line"><a name="l03737"></a><span class="lineno"> 3737</span>&#160;            object_ = ::clCreateBuffer(context(), flags, size, static_cast&lt;DataType*&gt;(&amp;*startIterator), &amp;error);</div><div class="line"><a name="l03738"></a><span class="lineno"> 3738</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03739"></a><span class="lineno"> 3739</span>&#160;            object_ = ::clCreateBuffer(context(), flags, size, 0, &amp;error);</div><div class="line"><a name="l03740"></a><span class="lineno"> 3740</span>&#160;        }</div><div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>&#160;</div><div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>&#160;        detail::errHandler(error, __CREATE_BUFFER_ERR);</div><div class="line"><a name="l03743"></a><span class="lineno"> 3743</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l03744"></a><span class="lineno"> 3744</span>&#160;            *err = error;</div><div class="line"><a name="l03745"></a><span class="lineno"> 3745</span>&#160;        }</div><div class="line"><a name="l03746"></a><span class="lineno"> 3746</span>&#160;</div><div class="line"><a name="l03747"></a><span class="lineno"> 3747</span>&#160;        <span class="keywordflow">if</span>( !useHostPtr ) {</div><div class="line"><a name="l03748"></a><span class="lineno"> 3748</span>&#160;            error = <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">cl::copy</a>(startIterator, endIterator, *<span class="keyword">this</span>);</div><div class="line"><a name="l03749"></a><span class="lineno"> 3749</span>&#160;            detail::errHandler(error, __CREATE_BUFFER_ERR);</div><div class="line"><a name="l03750"></a><span class="lineno"> 3750</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l03751"></a><span class="lineno"> 3751</span>&#160;                *err = error;</div><div class="line"><a name="l03752"></a><span class="lineno"> 3752</span>&#160;            }</div><div class="line"><a name="l03753"></a><span class="lineno"> 3753</span>&#160;        }</div><div class="line"><a name="l03754"></a><span class="lineno"> 3754</span>&#160;    }</div><div class="line"><a name="l03755"></a><span class="lineno"> 3755</span>&#160;</div><div class="line"><a name="l03761"></a><span class="lineno"> 3761</span>&#160;    <span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l03762"></a><span class="lineno"> 3762</span>&#160;    <a class="code" href="classcl_1_1_buffer.html">Buffer</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a> &amp;context, IteratorType startIterator, IteratorType endIterator,</div><div class="line"><a name="l03763"></a><span class="lineno"> 3763</span>&#160;        <span class="keywordtype">bool</span> readOnly, <span class="keywordtype">bool</span> useHostPtr = <span class="keyword">false</span>, cl_int* err = NULL);</div><div class="line"><a name="l03764"></a><span class="lineno"> 3764</span>&#160;    </div><div class="line"><a name="l03769"></a><span class="lineno"> 3769</span>&#160;    <span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l03770"></a><span class="lineno"> 3770</span>&#160;    <a class="code" href="classcl_1_1_buffer.html">Buffer</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, IteratorType startIterator, IteratorType endIterator,</div><div class="line"><a name="l03771"></a><span class="lineno"> 3771</span>&#160;        <span class="keywordtype">bool</span> readOnly, <span class="keywordtype">bool</span> useHostPtr = <span class="keyword">false</span>, cl_int* err = NULL);</div><div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>&#160;</div><div class="line"><a name="l03774"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#a1c82aa24dd8a4d80b698605f60a26d71"> 3774</a></span>&#160;    <a class="code" href="classcl_1_1_buffer.html#a1c82aa24dd8a4d80b698605f60a26d71">Buffer</a>() : <a class="code" href="classcl_1_1_memory.html">Memory</a>() { }</div><div class="line"><a name="l03775"></a><span class="lineno"> 3775</span>&#160;</div><div class="line"><a name="l03783"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#a68c77da266a476c4b4789bd53aa33337"> 3783</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_buffer.html#a68c77da266a476c4b4789bd53aa33337">Buffer</a>(<span class="keyword">const</span> cl_mem&amp; buffer, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) :</div><div class="line"><a name="l03784"></a><span class="lineno"> 3784</span>&#160;        <a class="code" href="classcl_1_1_memory.html">Memory</a>(buffer, retainObject) { }</div><div class="line"><a name="l03785"></a><span class="lineno"> 3785</span>&#160;</div><div class="line"><a name="l03790"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#a7f1c8cf8cd50afde28a6a1e1f2d100b0"> 3790</a></span>&#160;    <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l03791"></a><span class="lineno"> 3791</span>&#160;    {</div><div class="line"><a name="l03792"></a><span class="lineno"> 3792</span>&#160;        <a class="code" href="classcl_1_1_memory.html#aa6cd4c07a111c6baa3195bee2a447dad">Memory::operator=</a>(rhs);</div><div class="line"><a name="l03793"></a><span class="lineno"> 3793</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03794"></a><span class="lineno"> 3794</span>&#160;    }</div><div class="line"><a name="l03795"></a><span class="lineno"> 3795</span>&#160;</div><div class="line"><a name="l03799"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#a2cfe3144f7d69d4b390edfa934641dcf"> 3799</a></span>&#160;    <a class="code" href="classcl_1_1_buffer.html#a2cfe3144f7d69d4b390edfa934641dcf">Buffer</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buf) : <a class="code" href="classcl_1_1_memory.html">Memory</a>(buf) {}</div><div class="line"><a name="l03800"></a><span class="lineno"> 3800</span>&#160;</div><div class="line"><a name="l03804"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#a88ebbe0901b409d64fbef488ba83d82a"> 3804</a></span>&#160;    <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a> &amp;buf)</div><div class="line"><a name="l03805"></a><span class="lineno"> 3805</span>&#160;    {</div><div class="line"><a name="l03806"></a><span class="lineno"> 3806</span>&#160;        <a class="code" href="classcl_1_1_memory.html#aa6cd4c07a111c6baa3195bee2a447dad">Memory::operator=</a>(buf);</div><div class="line"><a name="l03807"></a><span class="lineno"> 3807</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03808"></a><span class="lineno"> 3808</span>&#160;    }</div><div class="line"><a name="l03809"></a><span class="lineno"> 3809</span>&#160;</div><div class="line"><a name="l03813"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#a5ee4055b862daa313919ef577600b9fa"> 3813</a></span>&#160;    <a class="code" href="classcl_1_1_buffer.html#a5ee4055b862daa313919ef577600b9fa">Buffer</a>(<a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp;&amp; buf) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_memory.html">Memory</a>(std::move(buf)) {}</div><div class="line"><a name="l03814"></a><span class="lineno"> 3814</span>&#160;</div><div class="line"><a name="l03818"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#a1954b31fb8d5e1fd221c128d73e387ce"> 3818</a></span>&#160;    <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; operator = (<a class="code" href="classcl_1_1_buffer.html">Buffer</a> &amp;&amp;buf)</div><div class="line"><a name="l03819"></a><span class="lineno"> 3819</span>&#160;    {</div><div class="line"><a name="l03820"></a><span class="lineno"> 3820</span>&#160;        <a class="code" href="classcl_1_1_memory.html#aa6cd4c07a111c6baa3195bee2a447dad">Memory::operator=</a>(std::move(buf));</div><div class="line"><a name="l03821"></a><span class="lineno"> 3821</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03822"></a><span class="lineno"> 3822</span>&#160;    }</div><div class="line"><a name="l03823"></a><span class="lineno"> 3823</span>&#160;</div><div class="line"><a name="l03824"></a><span class="lineno"> 3824</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l03825"></a><span class="lineno"> 3825</span>&#160;</div><div class="line"><a name="l03829"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#ab73f1e0ab2224f3d515820dd6b0c1d73"> 3829</a></span>&#160;    <a class="code" href="classcl_1_1_buffer.html">Buffer</a> <a class="code" href="classcl_1_1_buffer.html#ab73f1e0ab2224f3d515820dd6b0c1d73">createSubBuffer</a>(</div><div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>&#160;        cl_buffer_create_type buffer_create_type,</div><div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">void</span> * buffer_create_info,</div><div class="line"><a name="l03833"></a><span class="lineno"> 3833</span>&#160;        cl_int * err = NULL)</div><div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>&#160;    {</div><div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>&#160;        <a class="code" href="classcl_1_1_buffer.html">Buffer</a> result;</div><div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>&#160;        cl_int error;</div><div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>&#160;        result.object_ = ::clCreateSubBuffer(</div><div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>&#160;            object_, </div><div class="line"><a name="l03839"></a><span class="lineno"> 3839</span>&#160;            flags, </div><div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>&#160;            buffer_create_type, </div><div class="line"><a name="l03841"></a><span class="lineno"> 3841</span>&#160;            buffer_create_info, </div><div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>&#160;            &amp;error);</div><div class="line"><a name="l03843"></a><span class="lineno"> 3843</span>&#160;</div><div class="line"><a name="l03844"></a><span class="lineno"> 3844</span>&#160;        detail::errHandler(error, __CREATE_SUBBUFFER_ERR);</div><div class="line"><a name="l03845"></a><span class="lineno"> 3845</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l03846"></a><span class="lineno"> 3846</span>&#160;            *err = error;</div><div class="line"><a name="l03847"></a><span class="lineno"> 3847</span>&#160;        }</div><div class="line"><a name="l03848"></a><span class="lineno"> 3848</span>&#160;</div><div class="line"><a name="l03849"></a><span class="lineno"> 3849</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l03850"></a><span class="lineno"> 3850</span>&#160;    }       </div><div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>&#160;};</div><div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>&#160;</div><div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>&#160;<span class="preprocessor">#if defined (CL_HPP_USE_DX_INTEROP)</span></div><div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>&#160;</div><div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>&#160;<span class="keyword">class </span>BufferD3D10 : <span class="keyword">public</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a></div><div class="line"><a name="l03864"></a><span class="lineno"> 3864</span>&#160;{</div><div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03866"></a><span class="lineno"> 3866</span>&#160;   </div><div class="line"><a name="l03867"></a><span class="lineno"> 3867</span>&#160;</div><div class="line"><a name="l03873"></a><span class="lineno"> 3873</span>&#160;    BufferD3D10(</div><div class="line"><a name="l03874"></a><span class="lineno"> 3874</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l03875"></a><span class="lineno"> 3875</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>&#160;        ID3D10Buffer* bufobj,</div><div class="line"><a name="l03877"></a><span class="lineno"> 3877</span>&#160;        cl_int * err = NULL) : pfn_clCreateFromD3D10BufferKHR(<span class="keyword">nullptr</span>)</div><div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>&#160;    {</div><div class="line"><a name="l03879"></a><span class="lineno"> 3879</span>&#160;        <span class="keyword">typedef</span> CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)(</div><div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>&#160;            cl_context context, cl_mem_flags flags, ID3D10Buffer*  buffer,</div><div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>&#160;            cl_int* errcode_ret);</div><div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>&#160;        PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR;</div><div class="line"><a name="l03883"></a><span class="lineno"> 3883</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l03884"></a><span class="lineno"> 3884</span>&#160;        vector&lt;cl_context_properties&gt; props = context.getInfo&lt;CL_CONTEXT_PROPERTIES&gt;();</div><div class="line"><a name="l03885"></a><span class="lineno"> 3885</span>&#160;        cl_platform platform = -1;</div><div class="line"><a name="l03886"></a><span class="lineno"> 3886</span>&#160;        <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i &lt; props.size(); ++i ) {</div><div class="line"><a name="l03887"></a><span class="lineno"> 3887</span>&#160;            <span class="keywordflow">if</span>( props[i] == CL_CONTEXT_PLATFORM ) {</div><div class="line"><a name="l03888"></a><span class="lineno"> 3888</span>&#160;                platform = props[i+1];</div><div class="line"><a name="l03889"></a><span class="lineno"> 3889</span>&#160;            }</div><div class="line"><a name="l03890"></a><span class="lineno"> 3890</span>&#160;        }</div><div class="line"><a name="l03891"></a><span class="lineno"> 3891</span>&#160;        CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clCreateFromD3D10BufferKHR);</div><div class="line"><a name="l03892"></a><span class="lineno"> 3892</span>&#160;<span class="preprocessor">#elif CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l03893"></a><span class="lineno"> 3893</span>&#160;        CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateFromD3D10BufferKHR);</div><div class="line"><a name="l03894"></a><span class="lineno"> 3894</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03895"></a><span class="lineno"> 3895</span>&#160;</div><div class="line"><a name="l03896"></a><span class="lineno"> 3896</span>&#160;        cl_int error;</div><div class="line"><a name="l03897"></a><span class="lineno"> 3897</span>&#160;        object_ = pfn_clCreateFromD3D10BufferKHR(</div><div class="line"><a name="l03898"></a><span class="lineno"> 3898</span>&#160;            context(),</div><div class="line"><a name="l03899"></a><span class="lineno"> 3899</span>&#160;            flags,</div><div class="line"><a name="l03900"></a><span class="lineno"> 3900</span>&#160;            bufobj,</div><div class="line"><a name="l03901"></a><span class="lineno"> 3901</span>&#160;            &amp;error);</div><div class="line"><a name="l03902"></a><span class="lineno"> 3902</span>&#160;</div><div class="line"><a name="l03903"></a><span class="lineno"> 3903</span>&#160;        detail::errHandler(error, __CREATE_GL_BUFFER_ERR);</div><div class="line"><a name="l03904"></a><span class="lineno"> 3904</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l03905"></a><span class="lineno"> 3905</span>&#160;            *err = error;</div><div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>&#160;        }</div><div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>&#160;    }</div><div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>&#160;</div><div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>&#160;    BufferD3D10() : <a class="code" href="classcl_1_1_buffer.html">Buffer</a>() { }</div><div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>&#160;</div><div class="line"><a name="l03919"></a><span class="lineno"> 3919</span>&#160;    <span class="keyword">explicit</span> BufferD3D10(<span class="keyword">const</span> cl_mem&amp; buffer, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>&#160;        <a class="code" href="classcl_1_1_buffer.html">Buffer</a>(buffer, retainObject) { }</div><div class="line"><a name="l03921"></a><span class="lineno"> 3921</span>&#160;</div><div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>&#160;    BufferD3D10&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>&#160;    {</div><div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>&#160;        <a class="code" href="classcl_1_1_buffer.html#a7f1c8cf8cd50afde28a6a1e1f2d100b0">Buffer::operator=</a>(rhs);</div><div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>&#160;    }</div><div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>&#160;</div><div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>&#160;    BufferD3D10(<span class="keyword">const</span> BufferD3D10&amp; buf) : </div><div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>&#160;        <a class="code" href="classcl_1_1_buffer.html">Buffer</a>(buf) {}</div><div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>&#160;</div><div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>&#160;    BufferD3D10&amp; operator = (<span class="keyword">const</span> BufferD3D10 &amp;buf)</div><div class="line"><a name="l03942"></a><span class="lineno"> 3942</span>&#160;    {</div><div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>&#160;        <a class="code" href="classcl_1_1_buffer.html#a7f1c8cf8cd50afde28a6a1e1f2d100b0">Buffer::operator=</a>(buf);</div><div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03945"></a><span class="lineno"> 3945</span>&#160;    }</div><div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>&#160;</div><div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>&#160;    BufferD3D10(BufferD3D10&amp;&amp; buf) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_buffer.html">Buffer</a>(std::move(buf)) {}</div><div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>&#160;</div><div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>&#160;    BufferD3D10&amp; operator = (BufferD3D10 &amp;&amp;buf)</div><div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>&#160;    {</div><div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>&#160;        <a class="code" href="classcl_1_1_buffer.html#a7f1c8cf8cd50afde28a6a1e1f2d100b0">Buffer::operator=</a>(std::move(buf));</div><div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>&#160;    }</div><div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>&#160;};</div><div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>&#160;</div><div class="line"><a name="l03971"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_g_l.html"> 3971</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_buffer_g_l.html">BufferGL</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a></div><div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>&#160;{</div><div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l03979"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_g_l.html#a7ac53f876cfdb10fdd25a40d24b36686"> 3979</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_g_l.html#a7ac53f876cfdb10fdd25a40d24b36686">BufferGL</a>(</div><div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>&#160;        cl_GLuint bufobj,</div><div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>&#160;        cl_int * err = NULL)</div><div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>&#160;    {</div><div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>&#160;        cl_int error;</div><div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>&#160;        object_ = ::clCreateFromGLBuffer(</div><div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>&#160;            context(),</div><div class="line"><a name="l03988"></a><span class="lineno"> 3988</span>&#160;            flags,</div><div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>&#160;            bufobj,</div><div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>&#160;            &amp;error);</div><div class="line"><a name="l03991"></a><span class="lineno"> 3991</span>&#160;</div><div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>&#160;        detail::errHandler(error, __CREATE_GL_BUFFER_ERR);</div><div class="line"><a name="l03993"></a><span class="lineno"> 3993</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l03994"></a><span class="lineno"> 3994</span>&#160;            *err = error;</div><div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>&#160;        }</div><div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>&#160;    }</div><div class="line"><a name="l03997"></a><span class="lineno"> 3997</span>&#160;</div><div class="line"><a name="l03999"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_g_l.html#a77604377be0e356aabfed15f6ea00b31"> 3999</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_g_l.html#a77604377be0e356aabfed15f6ea00b31">BufferGL</a>() : <a class="code" href="classcl_1_1_buffer.html">Buffer</a>() { }</div><div class="line"><a name="l04000"></a><span class="lineno"> 4000</span>&#160;</div><div class="line"><a name="l04008"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_g_l.html#ae70de3a74671b3a93e05279a8185cd7a"> 4008</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_buffer_g_l.html#ae70de3a74671b3a93e05279a8185cd7a">BufferGL</a>(<span class="keyword">const</span> cl_mem&amp; buffer, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) :</div><div class="line"><a name="l04009"></a><span class="lineno"> 4009</span>&#160;        <a class="code" href="classcl_1_1_buffer.html">Buffer</a>(buffer, retainObject) { }</div><div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>&#160;</div><div class="line"><a name="l04015"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_g_l.html#aaef7042e8710b4ea535422bfe1c17590"> 4015</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_g_l.html">BufferGL</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l04016"></a><span class="lineno"> 4016</span>&#160;    {</div><div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>&#160;        <a class="code" href="classcl_1_1_buffer.html#a7f1c8cf8cd50afde28a6a1e1f2d100b0">Buffer::operator=</a>(rhs);</div><div class="line"><a name="l04018"></a><span class="lineno"> 4018</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04019"></a><span class="lineno"> 4019</span>&#160;    }</div><div class="line"><a name="l04020"></a><span class="lineno"> 4020</span>&#160;</div><div class="line"><a name="l04024"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_g_l.html#acc718908deb55b07dea09645fe322dbc"> 4024</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_g_l.html#acc718908deb55b07dea09645fe322dbc">BufferGL</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer_g_l.html">BufferGL</a>&amp; buf) : <a class="code" href="classcl_1_1_buffer.html">Buffer</a>(buf) {}</div><div class="line"><a name="l04025"></a><span class="lineno"> 4025</span>&#160;</div><div class="line"><a name="l04029"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_g_l.html#a2b4cf6fa4af91b9902f59535613bee87"> 4029</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_g_l.html">BufferGL</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer_g_l.html">BufferGL</a> &amp;buf)</div><div class="line"><a name="l04030"></a><span class="lineno"> 4030</span>&#160;    {</div><div class="line"><a name="l04031"></a><span class="lineno"> 4031</span>&#160;        <a class="code" href="classcl_1_1_buffer.html#a7f1c8cf8cd50afde28a6a1e1f2d100b0">Buffer::operator=</a>(buf);</div><div class="line"><a name="l04032"></a><span class="lineno"> 4032</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04033"></a><span class="lineno"> 4033</span>&#160;    }</div><div class="line"><a name="l04034"></a><span class="lineno"> 4034</span>&#160;</div><div class="line"><a name="l04038"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_g_l.html#a1f34aee208c887c15d8e699f629db86b"> 4038</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_g_l.html#a1f34aee208c887c15d8e699f629db86b">BufferGL</a>(<a class="code" href="classcl_1_1_buffer_g_l.html">BufferGL</a>&amp;&amp; buf) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_buffer.html">Buffer</a>(std::move(buf)) {}</div><div class="line"><a name="l04039"></a><span class="lineno"> 4039</span>&#160;</div><div class="line"><a name="l04043"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_g_l.html#ae286c59c3fbecceadb5d1c793148904a"> 4043</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_g_l.html">BufferGL</a>&amp; operator = (<a class="code" href="classcl_1_1_buffer_g_l.html">BufferGL</a> &amp;&amp;buf)</div><div class="line"><a name="l04044"></a><span class="lineno"> 4044</span>&#160;    {</div><div class="line"><a name="l04045"></a><span class="lineno"> 4045</span>&#160;        <a class="code" href="classcl_1_1_buffer.html#a7f1c8cf8cd50afde28a6a1e1f2d100b0">Buffer::operator=</a>(std::move(buf));</div><div class="line"><a name="l04046"></a><span class="lineno"> 4046</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04047"></a><span class="lineno"> 4047</span>&#160;    }</div><div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>&#160;</div><div class="line"><a name="l04050"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_g_l.html#ada9b870e058a54ccaf4789e045d1d570"> 4050</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_buffer_g_l.html#ada9b870e058a54ccaf4789e045d1d570">getObjectInfo</a>(</div><div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>&#160;        cl_gl_object_type *type,</div><div class="line"><a name="l04052"></a><span class="lineno"> 4052</span>&#160;        cl_GLuint * gl_object_name)</div><div class="line"><a name="l04053"></a><span class="lineno"> 4053</span>&#160;    {</div><div class="line"><a name="l04054"></a><span class="lineno"> 4054</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l04055"></a><span class="lineno"> 4055</span>&#160;            ::clGetGLObjectInfo(object_,type,gl_object_name),</div><div class="line"><a name="l04056"></a><span class="lineno"> 4056</span>&#160;            __GET_GL_OBJECT_INFO_ERR);</div><div class="line"><a name="l04057"></a><span class="lineno"> 4057</span>&#160;    }</div><div class="line"><a name="l04058"></a><span class="lineno"> 4058</span>&#160;};</div><div class="line"><a name="l04059"></a><span class="lineno"> 4059</span>&#160;</div><div class="line"><a name="l04068"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_render_g_l.html"> 4068</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_buffer_render_g_l.html">BufferRenderGL</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a></div><div class="line"><a name="l04069"></a><span class="lineno"> 4069</span>&#160;{</div><div class="line"><a name="l04070"></a><span class="lineno"> 4070</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l04076"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_render_g_l.html#ac2f60478116d35c2a96c522205fcf932"> 4076</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_render_g_l.html#ac2f60478116d35c2a96c522205fcf932">BufferRenderGL</a>(</div><div class="line"><a name="l04077"></a><span class="lineno"> 4077</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l04078"></a><span class="lineno"> 4078</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l04079"></a><span class="lineno"> 4079</span>&#160;        cl_GLuint bufobj,</div><div class="line"><a name="l04080"></a><span class="lineno"> 4080</span>&#160;        cl_int * err = NULL)</div><div class="line"><a name="l04081"></a><span class="lineno"> 4081</span>&#160;    {</div><div class="line"><a name="l04082"></a><span class="lineno"> 4082</span>&#160;        cl_int error;</div><div class="line"><a name="l04083"></a><span class="lineno"> 4083</span>&#160;        object_ = ::clCreateFromGLRenderbuffer(</div><div class="line"><a name="l04084"></a><span class="lineno"> 4084</span>&#160;            context(),</div><div class="line"><a name="l04085"></a><span class="lineno"> 4085</span>&#160;            flags,</div><div class="line"><a name="l04086"></a><span class="lineno"> 4086</span>&#160;            bufobj,</div><div class="line"><a name="l04087"></a><span class="lineno"> 4087</span>&#160;            &amp;error);</div><div class="line"><a name="l04088"></a><span class="lineno"> 4088</span>&#160;</div><div class="line"><a name="l04089"></a><span class="lineno"> 4089</span>&#160;        detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR);</div><div class="line"><a name="l04090"></a><span class="lineno"> 4090</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l04091"></a><span class="lineno"> 4091</span>&#160;            *err = error;</div><div class="line"><a name="l04092"></a><span class="lineno"> 4092</span>&#160;        }</div><div class="line"><a name="l04093"></a><span class="lineno"> 4093</span>&#160;    }</div><div class="line"><a name="l04094"></a><span class="lineno"> 4094</span>&#160;</div><div class="line"><a name="l04096"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_render_g_l.html#a9ae513ba0c6664353c389764c7e1011d"> 4096</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_render_g_l.html#a9ae513ba0c6664353c389764c7e1011d">BufferRenderGL</a>() : <a class="code" href="classcl_1_1_buffer.html">Buffer</a>() { }</div><div class="line"><a name="l04097"></a><span class="lineno"> 4097</span>&#160;</div><div class="line"><a name="l04105"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_render_g_l.html#a3214caef962ed7c7ff20e102f498eff6"> 4105</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_buffer_render_g_l.html#a3214caef962ed7c7ff20e102f498eff6">BufferRenderGL</a>(<span class="keyword">const</span> cl_mem&amp; buffer, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) :</div><div class="line"><a name="l04106"></a><span class="lineno"> 4106</span>&#160;        <a class="code" href="classcl_1_1_buffer.html">Buffer</a>(buffer, retainObject) { }</div><div class="line"><a name="l04107"></a><span class="lineno"> 4107</span>&#160;</div><div class="line"><a name="l04112"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_render_g_l.html#a8e133bcc8dce2061d9af72231506c124"> 4112</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_render_g_l.html">BufferRenderGL</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l04113"></a><span class="lineno"> 4113</span>&#160;    {</div><div class="line"><a name="l04114"></a><span class="lineno"> 4114</span>&#160;        <a class="code" href="classcl_1_1_buffer.html#a7f1c8cf8cd50afde28a6a1e1f2d100b0">Buffer::operator=</a>(rhs);</div><div class="line"><a name="l04115"></a><span class="lineno"> 4115</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04116"></a><span class="lineno"> 4116</span>&#160;    }</div><div class="line"><a name="l04117"></a><span class="lineno"> 4117</span>&#160;</div><div class="line"><a name="l04121"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_render_g_l.html#a9bbd05ded89c1c3d3c4fd52f0f5922b3"> 4121</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_render_g_l.html#a9bbd05ded89c1c3d3c4fd52f0f5922b3">BufferRenderGL</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer_render_g_l.html">BufferRenderGL</a>&amp; buf) : <a class="code" href="classcl_1_1_buffer.html">Buffer</a>(buf) {}</div><div class="line"><a name="l04122"></a><span class="lineno"> 4122</span>&#160;</div><div class="line"><a name="l04126"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_render_g_l.html#a5296dbddfe376e47fc1e44f92e067d7a"> 4126</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_render_g_l.html">BufferRenderGL</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer_render_g_l.html">BufferRenderGL</a> &amp;buf)</div><div class="line"><a name="l04127"></a><span class="lineno"> 4127</span>&#160;    {</div><div class="line"><a name="l04128"></a><span class="lineno"> 4128</span>&#160;        <a class="code" href="classcl_1_1_buffer.html#a7f1c8cf8cd50afde28a6a1e1f2d100b0">Buffer::operator=</a>(buf);</div><div class="line"><a name="l04129"></a><span class="lineno"> 4129</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04130"></a><span class="lineno"> 4130</span>&#160;    }</div><div class="line"><a name="l04131"></a><span class="lineno"> 4131</span>&#160;</div><div class="line"><a name="l04135"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_render_g_l.html#a387a6e721fd3283d288d86e9dbfda3a5"> 4135</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_render_g_l.html#a387a6e721fd3283d288d86e9dbfda3a5">BufferRenderGL</a>(<a class="code" href="classcl_1_1_buffer_render_g_l.html">BufferRenderGL</a>&amp;&amp; buf) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_buffer.html">Buffer</a>(std::move(buf)) {}</div><div class="line"><a name="l04136"></a><span class="lineno"> 4136</span>&#160;</div><div class="line"><a name="l04140"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_render_g_l.html#ae9c4cf5da3a2701ad3efddb7910792db"> 4140</a></span>&#160;    <a class="code" href="classcl_1_1_buffer_render_g_l.html">BufferRenderGL</a>&amp; operator = (<a class="code" href="classcl_1_1_buffer_render_g_l.html">BufferRenderGL</a> &amp;&amp;buf)</div><div class="line"><a name="l04141"></a><span class="lineno"> 4141</span>&#160;    {</div><div class="line"><a name="l04142"></a><span class="lineno"> 4142</span>&#160;        <a class="code" href="classcl_1_1_buffer.html#a7f1c8cf8cd50afde28a6a1e1f2d100b0">Buffer::operator=</a>(std::move(buf));</div><div class="line"><a name="l04143"></a><span class="lineno"> 4143</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04144"></a><span class="lineno"> 4144</span>&#160;    }</div><div class="line"><a name="l04145"></a><span class="lineno"> 4145</span>&#160;</div><div class="line"><a name="l04147"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer_render_g_l.html#a148deb18e39ee7553a96eb8e56557f5f"> 4147</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_buffer_render_g_l.html#a148deb18e39ee7553a96eb8e56557f5f">getObjectInfo</a>(</div><div class="line"><a name="l04148"></a><span class="lineno"> 4148</span>&#160;        cl_gl_object_type *type,</div><div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>&#160;        cl_GLuint * gl_object_name)</div><div class="line"><a name="l04150"></a><span class="lineno"> 4150</span>&#160;    {</div><div class="line"><a name="l04151"></a><span class="lineno"> 4151</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>&#160;            ::clGetGLObjectInfo(object_,type,gl_object_name),</div><div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>&#160;            __GET_GL_OBJECT_INFO_ERR);</div><div class="line"><a name="l04154"></a><span class="lineno"> 4154</span>&#160;    }</div><div class="line"><a name="l04155"></a><span class="lineno"> 4155</span>&#160;};</div><div class="line"><a name="l04156"></a><span class="lineno"> 4156</span>&#160;</div><div class="line"><a name="l04163"></a><span class="lineno"><a class="line" href="classcl_1_1_image.html"> 4163</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_image.html">Image</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_memory.html">Memory</a></div><div class="line"><a name="l04164"></a><span class="lineno"> 4164</span>&#160;{</div><div class="line"><a name="l04165"></a><span class="lineno"> 4165</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l04167"></a><span class="lineno"><a class="line" href="classcl_1_1_image.html#ad9a2f4b6a5ccbb7056613946bc6ee0b7"> 4167</a></span>&#160;    <a class="code" href="classcl_1_1_image.html#ad9a2f4b6a5ccbb7056613946bc6ee0b7">Image</a>() : <a class="code" href="classcl_1_1_memory.html">Memory</a>() { }</div><div class="line"><a name="l04168"></a><span class="lineno"> 4168</span>&#160;</div><div class="line"><a name="l04176"></a><span class="lineno"><a class="line" href="classcl_1_1_image.html#a644c4f0a68b5fbb716b0157f34d903b9"> 4176</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_image.html#a644c4f0a68b5fbb716b0157f34d903b9">Image</a>(<span class="keyword">const</span> cl_mem&amp; image, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) :</div><div class="line"><a name="l04177"></a><span class="lineno"> 4177</span>&#160;        <a class="code" href="classcl_1_1_memory.html">Memory</a>(image, retainObject) { }</div><div class="line"><a name="l04178"></a><span class="lineno"> 4178</span>&#160;</div><div class="line"><a name="l04183"></a><span class="lineno"><a class="line" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69"> 4183</a></span>&#160;    <a class="code" href="classcl_1_1_image.html">Image</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l04184"></a><span class="lineno"> 4184</span>&#160;    {</div><div class="line"><a name="l04185"></a><span class="lineno"> 4185</span>&#160;        <a class="code" href="classcl_1_1_memory.html#aa6cd4c07a111c6baa3195bee2a447dad">Memory::operator=</a>(rhs);</div><div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04187"></a><span class="lineno"> 4187</span>&#160;    }</div><div class="line"><a name="l04188"></a><span class="lineno"> 4188</span>&#160;</div><div class="line"><a name="l04192"></a><span class="lineno"><a class="line" href="classcl_1_1_image.html#a263dda8ec8a4a43e98a2dadde1b2ea31"> 4192</a></span>&#160;    <a class="code" href="classcl_1_1_image.html#a263dda8ec8a4a43e98a2dadde1b2ea31">Image</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; img) : <a class="code" href="classcl_1_1_memory.html">Memory</a>(img) {}</div><div class="line"><a name="l04193"></a><span class="lineno"> 4193</span>&#160;</div><div class="line"><a name="l04197"></a><span class="lineno"><a class="line" href="classcl_1_1_image.html#a971175a1a2d7ae9afcbaf591b3271dcc"> 4197</a></span>&#160;    <a class="code" href="classcl_1_1_image.html">Image</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a> &amp;img)</div><div class="line"><a name="l04198"></a><span class="lineno"> 4198</span>&#160;    {</div><div class="line"><a name="l04199"></a><span class="lineno"> 4199</span>&#160;        <a class="code" href="classcl_1_1_memory.html#aa6cd4c07a111c6baa3195bee2a447dad">Memory::operator=</a>(img);</div><div class="line"><a name="l04200"></a><span class="lineno"> 4200</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04201"></a><span class="lineno"> 4201</span>&#160;    }</div><div class="line"><a name="l04202"></a><span class="lineno"> 4202</span>&#160;</div><div class="line"><a name="l04206"></a><span class="lineno"><a class="line" href="classcl_1_1_image.html#af47b59a0b6626ba0dd855f826f31ad9b"> 4206</a></span>&#160;    <a class="code" href="classcl_1_1_image.html#af47b59a0b6626ba0dd855f826f31ad9b">Image</a>(<a class="code" href="classcl_1_1_image.html">Image</a>&amp;&amp; img) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_memory.html">Memory</a>(std::move(img)) {}</div><div class="line"><a name="l04207"></a><span class="lineno"> 4207</span>&#160;</div><div class="line"><a name="l04211"></a><span class="lineno"><a class="line" href="classcl_1_1_image.html#a4f43cba68be8360c92efb9fac590c51d"> 4211</a></span>&#160;    <a class="code" href="classcl_1_1_image.html">Image</a>&amp; operator = (<a class="code" href="classcl_1_1_image.html">Image</a> &amp;&amp;img)</div><div class="line"><a name="l04212"></a><span class="lineno"> 4212</span>&#160;    {</div><div class="line"><a name="l04213"></a><span class="lineno"> 4213</span>&#160;        <a class="code" href="classcl_1_1_memory.html#aa6cd4c07a111c6baa3195bee2a447dad">Memory::operator=</a>(std::move(img));</div><div class="line"><a name="l04214"></a><span class="lineno"> 4214</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04215"></a><span class="lineno"> 4215</span>&#160;    }</div><div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>&#160;</div><div class="line"><a name="l04217"></a><span class="lineno"> 4217</span>&#160;</div><div class="line"><a name="l04218"></a><span class="lineno"> 4218</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l04220"></a><span class="lineno"> 4220</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l04221"></a><span class="lineno"><a class="line" href="classcl_1_1_image.html#a7bf98f36e2e0bd8627377cfdfc260259"> 4221</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_image.html#a7bf98f36e2e0bd8627377cfdfc260259">getImageInfo</a>(cl_image_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l04222"></a><span class="lineno"> 4222</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04223"></a><span class="lineno"> 4223</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l04224"></a><span class="lineno"> 4224</span>&#160;            detail::getInfo(&amp;::clGetImageInfo, object_, name, param),</div><div class="line"><a name="l04225"></a><span class="lineno"> 4225</span>&#160;            __GET_IMAGE_INFO_ERR);</div><div class="line"><a name="l04226"></a><span class="lineno"> 4226</span>&#160;    }</div><div class="line"><a name="l04227"></a><span class="lineno"> 4227</span>&#160;    </div><div class="line"><a name="l04229"></a><span class="lineno"> 4229</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_image_info, name&gt;::param_type</a></div><div class="line"><a name="l04231"></a><span class="lineno"><a class="line" href="classcl_1_1_image.html#a6c19e6b799c523fe5229a7a8f3da7431"> 4231</a></span>&#160;    <a class="code" href="classcl_1_1_image.html#a6c19e6b799c523fe5229a7a8f3da7431">getImageInfo</a>(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l04232"></a><span class="lineno"> 4232</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l04233"></a><span class="lineno"> 4233</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l04234"></a><span class="lineno"> 4234</span>&#160;            detail::cl_image_info, name&gt;::param_type param;</div><div class="line"><a name="l04235"></a><span class="lineno"> 4235</span>&#160;        cl_int result = getImageInfo(name, &amp;param);</div><div class="line"><a name="l04236"></a><span class="lineno"> 4236</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l04237"></a><span class="lineno"> 4237</span>&#160;            *err = result;</div><div class="line"><a name="l04238"></a><span class="lineno"> 4238</span>&#160;        }</div><div class="line"><a name="l04239"></a><span class="lineno"> 4239</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l04240"></a><span class="lineno"> 4240</span>&#160;    }</div><div class="line"><a name="l04241"></a><span class="lineno"> 4241</span>&#160;};</div><div class="line"><a name="l04242"></a><span class="lineno"> 4242</span>&#160;</div><div class="line"><a name="l04243"></a><span class="lineno"> 4243</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l04244"></a><span class="lineno"> 4244</span>&#160;</div><div class="line"><a name="l04250"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d.html"> 4250</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_image1_d.html">Image1D</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_image.html">Image</a></div><div class="line"><a name="l04251"></a><span class="lineno"> 4251</span>&#160;{</div><div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l04257"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d.html#a9bf902e7607fdfd6dacf145cae2f31e9"> 4257</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d.html#a9bf902e7607fdfd6dacf145cae2f31e9">Image1D</a>(</div><div class="line"><a name="l04258"></a><span class="lineno"> 4258</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l04259"></a><span class="lineno"> 4259</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>&#160;        <a class="code" href="structcl_1_1_image_format.html">ImageFormat</a> format,</div><div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>&#160;        size_type width,</div><div class="line"><a name="l04262"></a><span class="lineno"> 4262</span>&#160;        <span class="keywordtype">void</span>* host_ptr = NULL,</div><div class="line"><a name="l04263"></a><span class="lineno"> 4263</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l04264"></a><span class="lineno"> 4264</span>&#160;    {</div><div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>&#160;        cl_int error;</div><div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>&#160;        cl_image_desc desc =</div><div class="line"><a name="l04267"></a><span class="lineno"> 4267</span>&#160;        {</div><div class="line"><a name="l04268"></a><span class="lineno"> 4268</span>&#160;            CL_MEM_OBJECT_IMAGE1D,</div><div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>&#160;            width,</div><div class="line"><a name="l04270"></a><span class="lineno"> 4270</span>&#160;            0, 0, 0, 0, 0, 0, 0, 0</div><div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>&#160;        };</div><div class="line"><a name="l04272"></a><span class="lineno"> 4272</span>&#160;        object_ = ::clCreateImage(</div><div class="line"><a name="l04273"></a><span class="lineno"> 4273</span>&#160;            context(), </div><div class="line"><a name="l04274"></a><span class="lineno"> 4274</span>&#160;            flags, </div><div class="line"><a name="l04275"></a><span class="lineno"> 4275</span>&#160;            &amp;format, </div><div class="line"><a name="l04276"></a><span class="lineno"> 4276</span>&#160;            &amp;desc, </div><div class="line"><a name="l04277"></a><span class="lineno"> 4277</span>&#160;            host_ptr, </div><div class="line"><a name="l04278"></a><span class="lineno"> 4278</span>&#160;            &amp;error);</div><div class="line"><a name="l04279"></a><span class="lineno"> 4279</span>&#160;</div><div class="line"><a name="l04280"></a><span class="lineno"> 4280</span>&#160;        detail::errHandler(error, __CREATE_IMAGE_ERR);</div><div class="line"><a name="l04281"></a><span class="lineno"> 4281</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l04282"></a><span class="lineno"> 4282</span>&#160;            *err = error;</div><div class="line"><a name="l04283"></a><span class="lineno"> 4283</span>&#160;        }</div><div class="line"><a name="l04284"></a><span class="lineno"> 4284</span>&#160;    }</div><div class="line"><a name="l04285"></a><span class="lineno"> 4285</span>&#160;</div><div class="line"><a name="l04287"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d.html#a0d7c48026af3f726ce861716b6dbe817"> 4287</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d.html#a0d7c48026af3f726ce861716b6dbe817">Image1D</a>() { }</div><div class="line"><a name="l04288"></a><span class="lineno"> 4288</span>&#160;</div><div class="line"><a name="l04296"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d.html#a7c8b730eba37624cb6d3af30f8a1c276"> 4296</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_image1_d.html#a7c8b730eba37624cb6d3af30f8a1c276">Image1D</a>(<span class="keyword">const</span> cl_mem&amp; image1D, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) :</div><div class="line"><a name="l04297"></a><span class="lineno"> 4297</span>&#160;        <a class="code" href="classcl_1_1_image.html">Image</a>(image1D, retainObject) { }</div><div class="line"><a name="l04298"></a><span class="lineno"> 4298</span>&#160;</div><div class="line"><a name="l04303"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d.html#a217618087dfc7d2ab13475eca82dc13f"> 4303</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d.html">Image1D</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l04304"></a><span class="lineno"> 4304</span>&#160;    {</div><div class="line"><a name="l04305"></a><span class="lineno"> 4305</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(rhs);</div><div class="line"><a name="l04306"></a><span class="lineno"> 4306</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04307"></a><span class="lineno"> 4307</span>&#160;    }</div><div class="line"><a name="l04308"></a><span class="lineno"> 4308</span>&#160;</div><div class="line"><a name="l04312"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d.html#a818cbf2c71af2948f199cc4ab5d39de5"> 4312</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d.html#a818cbf2c71af2948f199cc4ab5d39de5">Image1D</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_image1_d.html">Image1D</a>&amp; img) : <a class="code" href="classcl_1_1_image.html">Image</a>(img) {}</div><div class="line"><a name="l04313"></a><span class="lineno"> 4313</span>&#160;</div><div class="line"><a name="l04317"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d.html#af584fdac9204743b4b549e85ae906c21"> 4317</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d.html">Image1D</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_image1_d.html">Image1D</a> &amp;img)</div><div class="line"><a name="l04318"></a><span class="lineno"> 4318</span>&#160;    {</div><div class="line"><a name="l04319"></a><span class="lineno"> 4319</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(img);</div><div class="line"><a name="l04320"></a><span class="lineno"> 4320</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04321"></a><span class="lineno"> 4321</span>&#160;    }</div><div class="line"><a name="l04322"></a><span class="lineno"> 4322</span>&#160;</div><div class="line"><a name="l04326"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d.html#ab74ea8b65b39b808cfdec016973d2770"> 4326</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d.html#ab74ea8b65b39b808cfdec016973d2770">Image1D</a>(<a class="code" href="classcl_1_1_image1_d.html">Image1D</a>&amp;&amp; img) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_image.html">Image</a>(std::move(img)) {}</div><div class="line"><a name="l04327"></a><span class="lineno"> 4327</span>&#160;</div><div class="line"><a name="l04331"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d.html#aa5f07570723f701aa4fa0d8e76473db0"> 4331</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d.html">Image1D</a>&amp; operator = (<a class="code" href="classcl_1_1_image1_d.html">Image1D</a> &amp;&amp;img)</div><div class="line"><a name="l04332"></a><span class="lineno"> 4332</span>&#160;    {</div><div class="line"><a name="l04333"></a><span class="lineno"> 4333</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(std::move(img));</div><div class="line"><a name="l04334"></a><span class="lineno"> 4334</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04335"></a><span class="lineno"> 4335</span>&#160;    }</div><div class="line"><a name="l04336"></a><span class="lineno"> 4336</span>&#160;</div><div class="line"><a name="l04337"></a><span class="lineno"> 4337</span>&#160;};</div><div class="line"><a name="l04338"></a><span class="lineno"> 4338</span>&#160;</div><div class="line"><a name="l04342"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_buffer.html"> 4342</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_image1_d_buffer.html">Image1DBuffer</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_image.html">Image</a></div><div class="line"><a name="l04343"></a><span class="lineno"> 4343</span>&#160;{</div><div class="line"><a name="l04344"></a><span class="lineno"> 4344</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l04345"></a><span class="lineno"> 4345</span>&#160;    <a class="code" href="classcl_1_1_image1_d_buffer.html">Image1DBuffer</a>(</div><div class="line"><a name="l04346"></a><span class="lineno"> 4346</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l04347"></a><span class="lineno"> 4347</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l04348"></a><span class="lineno"> 4348</span>&#160;        <a class="code" href="structcl_1_1_image_format.html">ImageFormat</a> format,</div><div class="line"><a name="l04349"></a><span class="lineno"> 4349</span>&#160;        size_type width,</div><div class="line"><a name="l04350"></a><span class="lineno"> 4350</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a> &amp;buffer,</div><div class="line"><a name="l04351"></a><span class="lineno"> 4351</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l04352"></a><span class="lineno"> 4352</span>&#160;    {</div><div class="line"><a name="l04353"></a><span class="lineno"> 4353</span>&#160;        cl_int error;</div><div class="line"><a name="l04354"></a><span class="lineno"> 4354</span>&#160;        cl_image_desc desc =</div><div class="line"><a name="l04355"></a><span class="lineno"> 4355</span>&#160;        {</div><div class="line"><a name="l04356"></a><span class="lineno"> 4356</span>&#160;            CL_MEM_OBJECT_IMAGE1D_BUFFER,</div><div class="line"><a name="l04357"></a><span class="lineno"> 4357</span>&#160;            width,</div><div class="line"><a name="l04358"></a><span class="lineno"> 4358</span>&#160;            0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l04359"></a><span class="lineno"> 4359</span>&#160;            buffer()</div><div class="line"><a name="l04360"></a><span class="lineno"> 4360</span>&#160;        };</div><div class="line"><a name="l04361"></a><span class="lineno"> 4361</span>&#160;        object_ = ::clCreateImage(</div><div class="line"><a name="l04362"></a><span class="lineno"> 4362</span>&#160;            context(), </div><div class="line"><a name="l04363"></a><span class="lineno"> 4363</span>&#160;            flags, </div><div class="line"><a name="l04364"></a><span class="lineno"> 4364</span>&#160;            &amp;format, </div><div class="line"><a name="l04365"></a><span class="lineno"> 4365</span>&#160;            &amp;desc, </div><div class="line"><a name="l04366"></a><span class="lineno"> 4366</span>&#160;            NULL, </div><div class="line"><a name="l04367"></a><span class="lineno"> 4367</span>&#160;            &amp;error);</div><div class="line"><a name="l04368"></a><span class="lineno"> 4368</span>&#160;</div><div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>&#160;        detail::errHandler(error, __CREATE_IMAGE_ERR);</div><div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l04371"></a><span class="lineno"> 4371</span>&#160;            *err = error;</div><div class="line"><a name="l04372"></a><span class="lineno"> 4372</span>&#160;        }</div><div class="line"><a name="l04373"></a><span class="lineno"> 4373</span>&#160;    }</div><div class="line"><a name="l04374"></a><span class="lineno"> 4374</span>&#160;</div><div class="line"><a name="l04375"></a><span class="lineno"> 4375</span>&#160;    <a class="code" href="classcl_1_1_image1_d_buffer.html">Image1DBuffer</a>() { }</div><div class="line"><a name="l04376"></a><span class="lineno"> 4376</span>&#160;</div><div class="line"><a name="l04384"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_buffer.html#a6b83eb1ccf0e1f88718a6f55c7340088"> 4384</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_image1_d_buffer.html#a6b83eb1ccf0e1f88718a6f55c7340088">Image1DBuffer</a>(<span class="keyword">const</span> cl_mem&amp; image1D, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) :</div><div class="line"><a name="l04385"></a><span class="lineno"> 4385</span>&#160;        <a class="code" href="classcl_1_1_image.html">Image</a>(image1D, retainObject) { }</div><div class="line"><a name="l04386"></a><span class="lineno"> 4386</span>&#160;</div><div class="line"><a name="l04387"></a><span class="lineno"> 4387</span>&#160;    <a class="code" href="classcl_1_1_image1_d_buffer.html">Image1DBuffer</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l04388"></a><span class="lineno"> 4388</span>&#160;    {</div><div class="line"><a name="l04389"></a><span class="lineno"> 4389</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(rhs);</div><div class="line"><a name="l04390"></a><span class="lineno"> 4390</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04391"></a><span class="lineno"> 4391</span>&#160;    }</div><div class="line"><a name="l04392"></a><span class="lineno"> 4392</span>&#160;</div><div class="line"><a name="l04396"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_buffer.html#a223b309adff248549715812239867c06"> 4396</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d_buffer.html#a223b309adff248549715812239867c06">Image1DBuffer</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_image1_d_buffer.html">Image1DBuffer</a>&amp; img) : <a class="code" href="classcl_1_1_image.html">Image</a>(img) {}</div><div class="line"><a name="l04397"></a><span class="lineno"> 4397</span>&#160;</div><div class="line"><a name="l04401"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_buffer.html#af1038bf97260eb1335fe44810718209e"> 4401</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d_buffer.html">Image1DBuffer</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_image1_d_buffer.html">Image1DBuffer</a> &amp;img)</div><div class="line"><a name="l04402"></a><span class="lineno"> 4402</span>&#160;    {</div><div class="line"><a name="l04403"></a><span class="lineno"> 4403</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(img);</div><div class="line"><a name="l04404"></a><span class="lineno"> 4404</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04405"></a><span class="lineno"> 4405</span>&#160;    }</div><div class="line"><a name="l04406"></a><span class="lineno"> 4406</span>&#160;</div><div class="line"><a name="l04410"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_buffer.html#ac2a5ec18ce60b2a152f81a3ecca54b9a"> 4410</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d_buffer.html#ac2a5ec18ce60b2a152f81a3ecca54b9a">Image1DBuffer</a>(<a class="code" href="classcl_1_1_image1_d_buffer.html">Image1DBuffer</a>&amp;&amp; img) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_image.html">Image</a>(std::move(img)) {}</div><div class="line"><a name="l04411"></a><span class="lineno"> 4411</span>&#160;</div><div class="line"><a name="l04415"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_buffer.html#ab0a784c00a7472321a630e7191d44a6a"> 4415</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d_buffer.html">Image1DBuffer</a>&amp; operator = (<a class="code" href="classcl_1_1_image1_d_buffer.html">Image1DBuffer</a> &amp;&amp;img)</div><div class="line"><a name="l04416"></a><span class="lineno"> 4416</span>&#160;    {</div><div class="line"><a name="l04417"></a><span class="lineno"> 4417</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(std::move(img));</div><div class="line"><a name="l04418"></a><span class="lineno"> 4418</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04419"></a><span class="lineno"> 4419</span>&#160;    }</div><div class="line"><a name="l04420"></a><span class="lineno"> 4420</span>&#160;</div><div class="line"><a name="l04421"></a><span class="lineno"> 4421</span>&#160;};</div><div class="line"><a name="l04422"></a><span class="lineno"> 4422</span>&#160;</div><div class="line"><a name="l04426"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_array.html"> 4426</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_image1_d_array.html">Image1DArray</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_image.html">Image</a></div><div class="line"><a name="l04427"></a><span class="lineno"> 4427</span>&#160;{</div><div class="line"><a name="l04428"></a><span class="lineno"> 4428</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l04429"></a><span class="lineno"> 4429</span>&#160;    <a class="code" href="classcl_1_1_image1_d_array.html">Image1DArray</a>(</div><div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l04431"></a><span class="lineno"> 4431</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l04432"></a><span class="lineno"> 4432</span>&#160;        <a class="code" href="structcl_1_1_image_format.html">ImageFormat</a> format,</div><div class="line"><a name="l04433"></a><span class="lineno"> 4433</span>&#160;        size_type arraySize,</div><div class="line"><a name="l04434"></a><span class="lineno"> 4434</span>&#160;        size_type width,</div><div class="line"><a name="l04435"></a><span class="lineno"> 4435</span>&#160;        size_type rowPitch,</div><div class="line"><a name="l04436"></a><span class="lineno"> 4436</span>&#160;        <span class="keywordtype">void</span>* host_ptr = NULL,</div><div class="line"><a name="l04437"></a><span class="lineno"> 4437</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l04438"></a><span class="lineno"> 4438</span>&#160;    {</div><div class="line"><a name="l04439"></a><span class="lineno"> 4439</span>&#160;        cl_int error;</div><div class="line"><a name="l04440"></a><span class="lineno"> 4440</span>&#160;        cl_image_desc desc =</div><div class="line"><a name="l04441"></a><span class="lineno"> 4441</span>&#160;        {</div><div class="line"><a name="l04442"></a><span class="lineno"> 4442</span>&#160;            CL_MEM_OBJECT_IMAGE1D_ARRAY,</div><div class="line"><a name="l04443"></a><span class="lineno"> 4443</span>&#160;            width,</div><div class="line"><a name="l04444"></a><span class="lineno"> 4444</span>&#160;            0, 0,  <span class="comment">// height, depth (unused)</span></div><div class="line"><a name="l04445"></a><span class="lineno"> 4445</span>&#160;            arraySize,</div><div class="line"><a name="l04446"></a><span class="lineno"> 4446</span>&#160;            rowPitch,</div><div class="line"><a name="l04447"></a><span class="lineno"> 4447</span>&#160;            0, 0, 0, 0</div><div class="line"><a name="l04448"></a><span class="lineno"> 4448</span>&#160;        };</div><div class="line"><a name="l04449"></a><span class="lineno"> 4449</span>&#160;        object_ = ::clCreateImage(</div><div class="line"><a name="l04450"></a><span class="lineno"> 4450</span>&#160;            context(), </div><div class="line"><a name="l04451"></a><span class="lineno"> 4451</span>&#160;            flags, </div><div class="line"><a name="l04452"></a><span class="lineno"> 4452</span>&#160;            &amp;format, </div><div class="line"><a name="l04453"></a><span class="lineno"> 4453</span>&#160;            &amp;desc, </div><div class="line"><a name="l04454"></a><span class="lineno"> 4454</span>&#160;            host_ptr, </div><div class="line"><a name="l04455"></a><span class="lineno"> 4455</span>&#160;            &amp;error);</div><div class="line"><a name="l04456"></a><span class="lineno"> 4456</span>&#160;</div><div class="line"><a name="l04457"></a><span class="lineno"> 4457</span>&#160;        detail::errHandler(error, __CREATE_IMAGE_ERR);</div><div class="line"><a name="l04458"></a><span class="lineno"> 4458</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l04459"></a><span class="lineno"> 4459</span>&#160;            *err = error;</div><div class="line"><a name="l04460"></a><span class="lineno"> 4460</span>&#160;        }</div><div class="line"><a name="l04461"></a><span class="lineno"> 4461</span>&#160;    }</div><div class="line"><a name="l04462"></a><span class="lineno"> 4462</span>&#160;</div><div class="line"><a name="l04463"></a><span class="lineno"> 4463</span>&#160;    <a class="code" href="classcl_1_1_image1_d_array.html">Image1DArray</a>() { }</div><div class="line"><a name="l04464"></a><span class="lineno"> 4464</span>&#160;  </div><div class="line"><a name="l04472"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_array.html#ae8738615a72593ca2ec82c20d736da03"> 4472</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_image1_d_array.html#ae8738615a72593ca2ec82c20d736da03">Image1DArray</a>(<span class="keyword">const</span> cl_mem&amp; imageArray, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) :</div><div class="line"><a name="l04473"></a><span class="lineno"> 4473</span>&#160;        <a class="code" href="classcl_1_1_image.html">Image</a>(imageArray, retainObject) { }</div><div class="line"><a name="l04474"></a><span class="lineno"> 4474</span>&#160;</div><div class="line"><a name="l04475"></a><span class="lineno"> 4475</span>&#160;</div><div class="line"><a name="l04476"></a><span class="lineno"> 4476</span>&#160;    <a class="code" href="classcl_1_1_image1_d_array.html">Image1DArray</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l04477"></a><span class="lineno"> 4477</span>&#160;    {</div><div class="line"><a name="l04478"></a><span class="lineno"> 4478</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(rhs);</div><div class="line"><a name="l04479"></a><span class="lineno"> 4479</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04480"></a><span class="lineno"> 4480</span>&#160;    }</div><div class="line"><a name="l04481"></a><span class="lineno"> 4481</span>&#160;</div><div class="line"><a name="l04485"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_array.html#a36f96dc737c5e69505b6c1b4c3b6e10b"> 4485</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d_array.html#a36f96dc737c5e69505b6c1b4c3b6e10b">Image1DArray</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_image1_d_array.html">Image1DArray</a>&amp; img) : <a class="code" href="classcl_1_1_image.html">Image</a>(img) {}</div><div class="line"><a name="l04486"></a><span class="lineno"> 4486</span>&#160;</div><div class="line"><a name="l04490"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_array.html#aa291ed7bcc360d811bb5db813964efe6"> 4490</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d_array.html">Image1DArray</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_image1_d_array.html">Image1DArray</a> &amp;img)</div><div class="line"><a name="l04491"></a><span class="lineno"> 4491</span>&#160;    {</div><div class="line"><a name="l04492"></a><span class="lineno"> 4492</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(img);</div><div class="line"><a name="l04493"></a><span class="lineno"> 4493</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04494"></a><span class="lineno"> 4494</span>&#160;    }</div><div class="line"><a name="l04495"></a><span class="lineno"> 4495</span>&#160;</div><div class="line"><a name="l04499"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_array.html#a5392bebeab2ce9ae4da971c5e8f8a895"> 4499</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d_array.html#a5392bebeab2ce9ae4da971c5e8f8a895">Image1DArray</a>(<a class="code" href="classcl_1_1_image1_d_array.html">Image1DArray</a>&amp;&amp; img) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_image.html">Image</a>(std::move(img)) {}</div><div class="line"><a name="l04500"></a><span class="lineno"> 4500</span>&#160;</div><div class="line"><a name="l04504"></a><span class="lineno"><a class="line" href="classcl_1_1_image1_d_array.html#a8473fe05ecbc506209ad00297dd6f5c0"> 4504</a></span>&#160;    <a class="code" href="classcl_1_1_image1_d_array.html">Image1DArray</a>&amp; operator = (<a class="code" href="classcl_1_1_image1_d_array.html">Image1DArray</a> &amp;&amp;img)</div><div class="line"><a name="l04505"></a><span class="lineno"> 4505</span>&#160;    {</div><div class="line"><a name="l04506"></a><span class="lineno"> 4506</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(std::move(img));</div><div class="line"><a name="l04507"></a><span class="lineno"> 4507</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04508"></a><span class="lineno"> 4508</span>&#160;    }</div><div class="line"><a name="l04509"></a><span class="lineno"> 4509</span>&#160;</div><div class="line"><a name="l04510"></a><span class="lineno"> 4510</span>&#160;};</div><div class="line"><a name="l04511"></a><span class="lineno"> 4511</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l04512"></a><span class="lineno"> 4512</span>&#160;</div><div class="line"><a name="l04513"></a><span class="lineno"> 4513</span>&#160;</div><div class="line"><a name="l04520"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d.html"> 4520</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_image2_d.html">Image2D</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_image.html">Image</a></div><div class="line"><a name="l04521"></a><span class="lineno"> 4521</span>&#160;{</div><div class="line"><a name="l04522"></a><span class="lineno"> 4522</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l04527"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d.html#a994fa7059e735359e28ba9a2e389e734"> 4527</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d.html#a994fa7059e735359e28ba9a2e389e734">Image2D</a>(</div><div class="line"><a name="l04528"></a><span class="lineno"> 4528</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l04529"></a><span class="lineno"> 4529</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l04530"></a><span class="lineno"> 4530</span>&#160;        <a class="code" href="structcl_1_1_image_format.html">ImageFormat</a> format,</div><div class="line"><a name="l04531"></a><span class="lineno"> 4531</span>&#160;        size_type width,</div><div class="line"><a name="l04532"></a><span class="lineno"> 4532</span>&#160;        size_type height,</div><div class="line"><a name="l04533"></a><span class="lineno"> 4533</span>&#160;        size_type row_pitch = 0,</div><div class="line"><a name="l04534"></a><span class="lineno"> 4534</span>&#160;        <span class="keywordtype">void</span>* host_ptr = NULL,</div><div class="line"><a name="l04535"></a><span class="lineno"> 4535</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l04536"></a><span class="lineno"> 4536</span>&#160;    {</div><div class="line"><a name="l04537"></a><span class="lineno"> 4537</span>&#160;        cl_int error;</div><div class="line"><a name="l04538"></a><span class="lineno"> 4538</span>&#160;        <span class="keywordtype">bool</span> useCreateImage;</div><div class="line"><a name="l04539"></a><span class="lineno"> 4539</span>&#160;</div><div class="line"><a name="l04540"></a><span class="lineno"> 4540</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l04541"></a><span class="lineno"> 4541</span>&#160;        <span class="comment">// Run-time decision based on the actual platform</span></div><div class="line"><a name="l04542"></a><span class="lineno"> 4542</span>&#160;        {</div><div class="line"><a name="l04543"></a><span class="lineno"> 4543</span>&#160;            cl_uint version = detail::getContextPlatformVersion(context());</div><div class="line"><a name="l04544"></a><span class="lineno"> 4544</span>&#160;            useCreateImage = (version &gt;= 0x10002); <span class="comment">// OpenCL 1.2 or above</span></div><div class="line"><a name="l04545"></a><span class="lineno"> 4545</span>&#160;        }</div><div class="line"><a name="l04546"></a><span class="lineno"> 4546</span>&#160;<span class="preprocessor">#elif CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l04547"></a><span class="lineno"> 4547</span>&#160;        useCreateImage = <span class="keyword">true</span>;</div><div class="line"><a name="l04548"></a><span class="lineno"> 4548</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l04549"></a><span class="lineno"> 4549</span>&#160;        useCreateImage = <span class="keyword">false</span>;</div><div class="line"><a name="l04550"></a><span class="lineno"> 4550</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l04551"></a><span class="lineno"> 4551</span>&#160;</div><div class="line"><a name="l04552"></a><span class="lineno"> 4552</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l04553"></a><span class="lineno"> 4553</span>&#160;        <span class="keywordflow">if</span> (useCreateImage)</div><div class="line"><a name="l04554"></a><span class="lineno"> 4554</span>&#160;        {</div><div class="line"><a name="l04555"></a><span class="lineno"> 4555</span>&#160;            cl_image_desc desc =</div><div class="line"><a name="l04556"></a><span class="lineno"> 4556</span>&#160;            {</div><div class="line"><a name="l04557"></a><span class="lineno"> 4557</span>&#160;                CL_MEM_OBJECT_IMAGE2D,</div><div class="line"><a name="l04558"></a><span class="lineno"> 4558</span>&#160;                width,</div><div class="line"><a name="l04559"></a><span class="lineno"> 4559</span>&#160;                height,</div><div class="line"><a name="l04560"></a><span class="lineno"> 4560</span>&#160;                0, 0, <span class="comment">// depth, array size (unused)</span></div><div class="line"><a name="l04561"></a><span class="lineno"> 4561</span>&#160;                row_pitch,</div><div class="line"><a name="l04562"></a><span class="lineno"> 4562</span>&#160;                0, 0, 0, 0</div><div class="line"><a name="l04563"></a><span class="lineno"> 4563</span>&#160;            };</div><div class="line"><a name="l04564"></a><span class="lineno"> 4564</span>&#160;            object_ = ::clCreateImage(</div><div class="line"><a name="l04565"></a><span class="lineno"> 4565</span>&#160;                context(),</div><div class="line"><a name="l04566"></a><span class="lineno"> 4566</span>&#160;                flags,</div><div class="line"><a name="l04567"></a><span class="lineno"> 4567</span>&#160;                &amp;format,</div><div class="line"><a name="l04568"></a><span class="lineno"> 4568</span>&#160;                &amp;desc,</div><div class="line"><a name="l04569"></a><span class="lineno"> 4569</span>&#160;                host_ptr,</div><div class="line"><a name="l04570"></a><span class="lineno"> 4570</span>&#160;                &amp;error);</div><div class="line"><a name="l04571"></a><span class="lineno"> 4571</span>&#160;</div><div class="line"><a name="l04572"></a><span class="lineno"> 4572</span>&#160;            detail::errHandler(error, __CREATE_IMAGE_ERR);</div><div class="line"><a name="l04573"></a><span class="lineno"> 4573</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l04574"></a><span class="lineno"> 4574</span>&#160;                *err = error;</div><div class="line"><a name="l04575"></a><span class="lineno"> 4575</span>&#160;            }</div><div class="line"><a name="l04576"></a><span class="lineno"> 4576</span>&#160;        }</div><div class="line"><a name="l04577"></a><span class="lineno"> 4577</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l04578"></a><span class="lineno"> 4578</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l04579"></a><span class="lineno"> 4579</span>&#160;        <span class="keywordflow">if</span> (!useCreateImage)</div><div class="line"><a name="l04580"></a><span class="lineno"> 4580</span>&#160;        {</div><div class="line"><a name="l04581"></a><span class="lineno"> 4581</span>&#160;            object_ = ::clCreateImage2D(</div><div class="line"><a name="l04582"></a><span class="lineno"> 4582</span>&#160;                context(), flags,&amp;format, width, height, row_pitch, host_ptr, &amp;error);</div><div class="line"><a name="l04583"></a><span class="lineno"> 4583</span>&#160;</div><div class="line"><a name="l04584"></a><span class="lineno"> 4584</span>&#160;            detail::errHandler(error, __CREATE_IMAGE2D_ERR);</div><div class="line"><a name="l04585"></a><span class="lineno"> 4585</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l04586"></a><span class="lineno"> 4586</span>&#160;                *err = error;</div><div class="line"><a name="l04587"></a><span class="lineno"> 4587</span>&#160;            }</div><div class="line"><a name="l04588"></a><span class="lineno"> 4588</span>&#160;        }</div><div class="line"><a name="l04589"></a><span class="lineno"> 4589</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l04590"></a><span class="lineno"> 4590</span>&#160;    }</div><div class="line"><a name="l04591"></a><span class="lineno"> 4591</span>&#160;</div><div class="line"><a name="l04592"></a><span class="lineno"> 4592</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR)</span></div><div class="line"><a name="l04593"></a><span class="lineno"> 4593</span>&#160;</div><div class="line"><a name="l04598"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d.html#abe1d541bfe4a39bc5bae819cd5c6ef0e"> 4598</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d.html#abe1d541bfe4a39bc5bae819cd5c6ef0e">Image2D</a>(</div><div class="line"><a name="l04599"></a><span class="lineno"> 4599</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l04600"></a><span class="lineno"> 4600</span>&#160;        <a class="code" href="structcl_1_1_image_format.html">ImageFormat</a> format,</div><div class="line"><a name="l04601"></a><span class="lineno"> 4601</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a> &amp;sourceBuffer,</div><div class="line"><a name="l04602"></a><span class="lineno"> 4602</span>&#160;        size_type width,</div><div class="line"><a name="l04603"></a><span class="lineno"> 4603</span>&#160;        size_type height,</div><div class="line"><a name="l04604"></a><span class="lineno"> 4604</span>&#160;        size_type row_pitch = 0,</div><div class="line"><a name="l04605"></a><span class="lineno"> 4605</span>&#160;        cl_int* err = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l04606"></a><span class="lineno"> 4606</span>&#160;    {</div><div class="line"><a name="l04607"></a><span class="lineno"> 4607</span>&#160;        cl_int error;</div><div class="line"><a name="l04608"></a><span class="lineno"> 4608</span>&#160;</div><div class="line"><a name="l04609"></a><span class="lineno"> 4609</span>&#160;        cl_image_desc desc =</div><div class="line"><a name="l04610"></a><span class="lineno"> 4610</span>&#160;        {</div><div class="line"><a name="l04611"></a><span class="lineno"> 4611</span>&#160;            CL_MEM_OBJECT_IMAGE2D,</div><div class="line"><a name="l04612"></a><span class="lineno"> 4612</span>&#160;            width,</div><div class="line"><a name="l04613"></a><span class="lineno"> 4613</span>&#160;            height,</div><div class="line"><a name="l04614"></a><span class="lineno"> 4614</span>&#160;            0, 0, <span class="comment">// depth, array size (unused)</span></div><div class="line"><a name="l04615"></a><span class="lineno"> 4615</span>&#160;            row_pitch,</div><div class="line"><a name="l04616"></a><span class="lineno"> 4616</span>&#160;            0, 0, 0,</div><div class="line"><a name="l04617"></a><span class="lineno"> 4617</span>&#160;            <span class="comment">// Use buffer as input to image</span></div><div class="line"><a name="l04618"></a><span class="lineno"> 4618</span>&#160;            sourceBuffer()</div><div class="line"><a name="l04619"></a><span class="lineno"> 4619</span>&#160;        };</div><div class="line"><a name="l04620"></a><span class="lineno"> 4620</span>&#160;        object_ = ::clCreateImage(</div><div class="line"><a name="l04621"></a><span class="lineno"> 4621</span>&#160;            context(),</div><div class="line"><a name="l04622"></a><span class="lineno"> 4622</span>&#160;            0, <span class="comment">// flags inherited from buffer</span></div><div class="line"><a name="l04623"></a><span class="lineno"> 4623</span>&#160;            &amp;format,</div><div class="line"><a name="l04624"></a><span class="lineno"> 4624</span>&#160;            &amp;desc,</div><div class="line"><a name="l04625"></a><span class="lineno"> 4625</span>&#160;            <span class="keyword">nullptr</span>,</div><div class="line"><a name="l04626"></a><span class="lineno"> 4626</span>&#160;            &amp;error);</div><div class="line"><a name="l04627"></a><span class="lineno"> 4627</span>&#160;</div><div class="line"><a name="l04628"></a><span class="lineno"> 4628</span>&#160;        detail::errHandler(error, __CREATE_IMAGE_ERR);</div><div class="line"><a name="l04629"></a><span class="lineno"> 4629</span>&#160;        <span class="keywordflow">if</span> (err != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l04630"></a><span class="lineno"> 4630</span>&#160;            *err = error;</div><div class="line"><a name="l04631"></a><span class="lineno"> 4631</span>&#160;        }</div><div class="line"><a name="l04632"></a><span class="lineno"> 4632</span>&#160;    }</div><div class="line"><a name="l04633"></a><span class="lineno"> 4633</span>&#160;<span class="preprocessor">#endif //#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR)</span></div><div class="line"><a name="l04634"></a><span class="lineno"> 4634</span>&#160;</div><div class="line"><a name="l04635"></a><span class="lineno"> 4635</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l04636"></a><span class="lineno"> 4636</span>&#160;</div><div class="line"><a name="l04648"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d.html#af6e0b8578a6e36d76854468ae9dee400"> 4648</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d.html#af6e0b8578a6e36d76854468ae9dee400">Image2D</a>(</div><div class="line"><a name="l04649"></a><span class="lineno"> 4649</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l04650"></a><span class="lineno"> 4650</span>&#160;        cl_channel_order order,</div><div class="line"><a name="l04651"></a><span class="lineno"> 4651</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a> &amp;sourceImage,</div><div class="line"><a name="l04652"></a><span class="lineno"> 4652</span>&#160;        cl_int* err = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l04653"></a><span class="lineno"> 4653</span>&#160;    {</div><div class="line"><a name="l04654"></a><span class="lineno"> 4654</span>&#160;        cl_int error;</div><div class="line"><a name="l04655"></a><span class="lineno"> 4655</span>&#160;</div><div class="line"><a name="l04656"></a><span class="lineno"> 4656</span>&#160;        <span class="comment">// Descriptor fields have to match source image</span></div><div class="line"><a name="l04657"></a><span class="lineno"> 4657</span>&#160;        size_type sourceWidth = </div><div class="line"><a name="l04658"></a><span class="lineno"> 4658</span>&#160;            sourceImage.<a class="code" href="classcl_1_1_image.html#a7bf98f36e2e0bd8627377cfdfc260259">getImageInfo</a>&lt;CL_IMAGE_WIDTH&gt;();</div><div class="line"><a name="l04659"></a><span class="lineno"> 4659</span>&#160;        size_type sourceHeight = </div><div class="line"><a name="l04660"></a><span class="lineno"> 4660</span>&#160;            sourceImage.<a class="code" href="classcl_1_1_image.html#a7bf98f36e2e0bd8627377cfdfc260259">getImageInfo</a>&lt;CL_IMAGE_HEIGHT&gt;();</div><div class="line"><a name="l04661"></a><span class="lineno"> 4661</span>&#160;        size_type sourceRowPitch =</div><div class="line"><a name="l04662"></a><span class="lineno"> 4662</span>&#160;            sourceImage.<a class="code" href="classcl_1_1_image.html#a7bf98f36e2e0bd8627377cfdfc260259">getImageInfo</a>&lt;CL_IMAGE_ROW_PITCH&gt;();</div><div class="line"><a name="l04663"></a><span class="lineno"> 4663</span>&#160;        cl_uint sourceNumMIPLevels =</div><div class="line"><a name="l04664"></a><span class="lineno"> 4664</span>&#160;            sourceImage.<a class="code" href="classcl_1_1_image.html#a7bf98f36e2e0bd8627377cfdfc260259">getImageInfo</a>&lt;CL_IMAGE_NUM_MIP_LEVELS&gt;();</div><div class="line"><a name="l04665"></a><span class="lineno"> 4665</span>&#160;        cl_uint sourceNumSamples =</div><div class="line"><a name="l04666"></a><span class="lineno"> 4666</span>&#160;            sourceImage.<a class="code" href="classcl_1_1_image.html#a7bf98f36e2e0bd8627377cfdfc260259">getImageInfo</a>&lt;CL_IMAGE_NUM_SAMPLES&gt;();</div><div class="line"><a name="l04667"></a><span class="lineno"> 4667</span>&#160;        cl_image_format sourceFormat =</div><div class="line"><a name="l04668"></a><span class="lineno"> 4668</span>&#160;            sourceImage.<a class="code" href="classcl_1_1_image.html#a7bf98f36e2e0bd8627377cfdfc260259">getImageInfo</a>&lt;CL_IMAGE_FORMAT&gt;();</div><div class="line"><a name="l04669"></a><span class="lineno"> 4669</span>&#160;</div><div class="line"><a name="l04670"></a><span class="lineno"> 4670</span>&#160;        <span class="comment">// Update only the channel order. </span></div><div class="line"><a name="l04671"></a><span class="lineno"> 4671</span>&#160;        <span class="comment">// Channel format inherited from source.</span></div><div class="line"><a name="l04672"></a><span class="lineno"> 4672</span>&#160;        sourceFormat.image_channel_order = order;</div><div class="line"><a name="l04673"></a><span class="lineno"> 4673</span>&#160;        cl_image_desc desc =</div><div class="line"><a name="l04674"></a><span class="lineno"> 4674</span>&#160;        {</div><div class="line"><a name="l04675"></a><span class="lineno"> 4675</span>&#160;            CL_MEM_OBJECT_IMAGE2D,</div><div class="line"><a name="l04676"></a><span class="lineno"> 4676</span>&#160;            sourceWidth,</div><div class="line"><a name="l04677"></a><span class="lineno"> 4677</span>&#160;            sourceHeight,</div><div class="line"><a name="l04678"></a><span class="lineno"> 4678</span>&#160;            0, 0, <span class="comment">// depth (unused), array size (unused)</span></div><div class="line"><a name="l04679"></a><span class="lineno"> 4679</span>&#160;            sourceRowPitch,</div><div class="line"><a name="l04680"></a><span class="lineno"> 4680</span>&#160;            0, <span class="comment">// slice pitch (unused)</span></div><div class="line"><a name="l04681"></a><span class="lineno"> 4681</span>&#160;            sourceNumMIPLevels,</div><div class="line"><a name="l04682"></a><span class="lineno"> 4682</span>&#160;            sourceNumSamples,</div><div class="line"><a name="l04683"></a><span class="lineno"> 4683</span>&#160;            <span class="comment">// Use buffer as input to image</span></div><div class="line"><a name="l04684"></a><span class="lineno"> 4684</span>&#160;            sourceImage()</div><div class="line"><a name="l04685"></a><span class="lineno"> 4685</span>&#160;        };</div><div class="line"><a name="l04686"></a><span class="lineno"> 4686</span>&#160;        object_ = ::clCreateImage(</div><div class="line"><a name="l04687"></a><span class="lineno"> 4687</span>&#160;            context(),</div><div class="line"><a name="l04688"></a><span class="lineno"> 4688</span>&#160;            0, <span class="comment">// flags should be inherited from mem_object</span></div><div class="line"><a name="l04689"></a><span class="lineno"> 4689</span>&#160;            &amp;sourceFormat,</div><div class="line"><a name="l04690"></a><span class="lineno"> 4690</span>&#160;            &amp;desc,</div><div class="line"><a name="l04691"></a><span class="lineno"> 4691</span>&#160;            <span class="keyword">nullptr</span>,</div><div class="line"><a name="l04692"></a><span class="lineno"> 4692</span>&#160;            &amp;error);</div><div class="line"><a name="l04693"></a><span class="lineno"> 4693</span>&#160;</div><div class="line"><a name="l04694"></a><span class="lineno"> 4694</span>&#160;        detail::errHandler(error, __CREATE_IMAGE_ERR);</div><div class="line"><a name="l04695"></a><span class="lineno"> 4695</span>&#160;        <span class="keywordflow">if</span> (err != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l04696"></a><span class="lineno"> 4696</span>&#160;            *err = error;</div><div class="line"><a name="l04697"></a><span class="lineno"> 4697</span>&#160;        }</div><div class="line"><a name="l04698"></a><span class="lineno"> 4698</span>&#160;    }</div><div class="line"><a name="l04699"></a><span class="lineno"> 4699</span>&#160;<span class="preprocessor">#endif //#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l04700"></a><span class="lineno"> 4700</span>&#160;</div><div class="line"><a name="l04702"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d.html#a6ef2c932d8846c4ad7205c5352df687a"> 4702</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d.html#a6ef2c932d8846c4ad7205c5352df687a">Image2D</a>() { }</div><div class="line"><a name="l04703"></a><span class="lineno"> 4703</span>&#160;</div><div class="line"><a name="l04711"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d.html#a2a8221a4c64c1aaf47468c4ef6c05a61"> 4711</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_image2_d.html#a2a8221a4c64c1aaf47468c4ef6c05a61">Image2D</a>(<span class="keyword">const</span> cl_mem&amp; image2D, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) :</div><div class="line"><a name="l04712"></a><span class="lineno"> 4712</span>&#160;        <a class="code" href="classcl_1_1_image.html">Image</a>(image2D, retainObject) { }</div><div class="line"><a name="l04713"></a><span class="lineno"> 4713</span>&#160;</div><div class="line"><a name="l04718"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d.html#ac92eb515aa0d087cc63145ef4cfb536b"> 4718</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d.html">Image2D</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l04719"></a><span class="lineno"> 4719</span>&#160;    {</div><div class="line"><a name="l04720"></a><span class="lineno"> 4720</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(rhs);</div><div class="line"><a name="l04721"></a><span class="lineno"> 4721</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04722"></a><span class="lineno"> 4722</span>&#160;    }</div><div class="line"><a name="l04723"></a><span class="lineno"> 4723</span>&#160;</div><div class="line"><a name="l04727"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d.html#a01f30cbb6b4e74d81de88beb993b3d58"> 4727</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d.html#a01f30cbb6b4e74d81de88beb993b3d58">Image2D</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_image2_d.html">Image2D</a>&amp; img) : <a class="code" href="classcl_1_1_image.html">Image</a>(img) {}</div><div class="line"><a name="l04728"></a><span class="lineno"> 4728</span>&#160;</div><div class="line"><a name="l04732"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d.html#a368d6a9c12fd9e609a81dbe40f2d9880"> 4732</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d.html">Image2D</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_image2_d.html">Image2D</a> &amp;img)</div><div class="line"><a name="l04733"></a><span class="lineno"> 4733</span>&#160;    {</div><div class="line"><a name="l04734"></a><span class="lineno"> 4734</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(img);</div><div class="line"><a name="l04735"></a><span class="lineno"> 4735</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04736"></a><span class="lineno"> 4736</span>&#160;    }</div><div class="line"><a name="l04737"></a><span class="lineno"> 4737</span>&#160;</div><div class="line"><a name="l04741"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d.html#a95b1eeb977ec2f65b47617bfb541bdbd"> 4741</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d.html#a95b1eeb977ec2f65b47617bfb541bdbd">Image2D</a>(<a class="code" href="classcl_1_1_image2_d.html">Image2D</a>&amp;&amp; img) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_image.html">Image</a>(std::move(img)) {}</div><div class="line"><a name="l04742"></a><span class="lineno"> 4742</span>&#160;</div><div class="line"><a name="l04746"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d.html#a644ebfacb26cf161eff6958db7a86a1f"> 4746</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d.html">Image2D</a>&amp; operator = (<a class="code" href="classcl_1_1_image2_d.html">Image2D</a> &amp;&amp;img)</div><div class="line"><a name="l04747"></a><span class="lineno"> 4747</span>&#160;    {</div><div class="line"><a name="l04748"></a><span class="lineno"> 4748</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(std::move(img));</div><div class="line"><a name="l04749"></a><span class="lineno"> 4749</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04750"></a><span class="lineno"> 4750</span>&#160;    }</div><div class="line"><a name="l04751"></a><span class="lineno"> 4751</span>&#160;</div><div class="line"><a name="l04752"></a><span class="lineno"> 4752</span>&#160;};</div><div class="line"><a name="l04753"></a><span class="lineno"> 4753</span>&#160;</div><div class="line"><a name="l04754"></a><span class="lineno"> 4754</span>&#160;</div><div class="line"><a name="l04755"></a><span class="lineno"> 4755</span>&#160;<span class="preprocessor">#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)</span></div><div class="line"><a name="l04756"></a><span class="lineno"> 4756</span>&#160;</div><div class="line"><a name="l04765"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_g_l.html"> 4765</a></span>&#160;<span class="keyword">class </span>CL_EXT_PREFIX__VERSION_1_1_DEPRECATED <a class="code" href="classcl_1_1_image2_d_g_l.html">Image2DGL</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_image2_d.html">Image2D</a> </div><div class="line"><a name="l04766"></a><span class="lineno"> 4766</span>&#160;{</div><div class="line"><a name="l04767"></a><span class="lineno"> 4767</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l04773"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_g_l.html#aff349860939f29111357f51fd3881917"> 4773</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d_g_l.html#aff349860939f29111357f51fd3881917">Image2DGL</a>(</div><div class="line"><a name="l04774"></a><span class="lineno"> 4774</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l04775"></a><span class="lineno"> 4775</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l04776"></a><span class="lineno"> 4776</span>&#160;        cl_GLenum target,</div><div class="line"><a name="l04777"></a><span class="lineno"> 4777</span>&#160;        cl_GLint  miplevel,</div><div class="line"><a name="l04778"></a><span class="lineno"> 4778</span>&#160;        cl_GLuint texobj,</div><div class="line"><a name="l04779"></a><span class="lineno"> 4779</span>&#160;        cl_int * err = NULL)</div><div class="line"><a name="l04780"></a><span class="lineno"> 4780</span>&#160;    {</div><div class="line"><a name="l04781"></a><span class="lineno"> 4781</span>&#160;        cl_int error;</div><div class="line"><a name="l04782"></a><span class="lineno"> 4782</span>&#160;        object_ = ::clCreateFromGLTexture2D(</div><div class="line"><a name="l04783"></a><span class="lineno"> 4783</span>&#160;            context(),</div><div class="line"><a name="l04784"></a><span class="lineno"> 4784</span>&#160;            flags,</div><div class="line"><a name="l04785"></a><span class="lineno"> 4785</span>&#160;            target,</div><div class="line"><a name="l04786"></a><span class="lineno"> 4786</span>&#160;            miplevel,</div><div class="line"><a name="l04787"></a><span class="lineno"> 4787</span>&#160;            texobj,</div><div class="line"><a name="l04788"></a><span class="lineno"> 4788</span>&#160;            &amp;error);</div><div class="line"><a name="l04789"></a><span class="lineno"> 4789</span>&#160;</div><div class="line"><a name="l04790"></a><span class="lineno"> 4790</span>&#160;        detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR);</div><div class="line"><a name="l04791"></a><span class="lineno"> 4791</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l04792"></a><span class="lineno"> 4792</span>&#160;            *err = error;</div><div class="line"><a name="l04793"></a><span class="lineno"> 4793</span>&#160;        }</div><div class="line"><a name="l04794"></a><span class="lineno"> 4794</span>&#160;</div><div class="line"><a name="l04795"></a><span class="lineno"> 4795</span>&#160;    }</div><div class="line"><a name="l04796"></a><span class="lineno"> 4796</span>&#160;    </div><div class="line"><a name="l04798"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_g_l.html#a0232c815761105f1c87e833a193b5bcc"> 4798</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d_g_l.html#a0232c815761105f1c87e833a193b5bcc">Image2DGL</a>() : <a class="code" href="classcl_1_1_image2_d.html">Image2D</a>() { }</div><div class="line"><a name="l04799"></a><span class="lineno"> 4799</span>&#160;</div><div class="line"><a name="l04807"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_g_l.html#ada8671d0fd8072472bbb36c6786506d4"> 4807</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_image2_d_g_l.html#ada8671d0fd8072472bbb36c6786506d4">Image2DGL</a>(<span class="keyword">const</span> cl_mem&amp; image, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l04808"></a><span class="lineno"> 4808</span>&#160;        <a class="code" href="classcl_1_1_image2_d.html">Image2D</a>(image, retainObject) { }</div><div class="line"><a name="l04809"></a><span class="lineno"> 4809</span>&#160;</div><div class="line"><a name="l04814"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_g_l.html#a41f087446236e9e539a451c32dc8092f"> 4814</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d_g_l.html">Image2DGL</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l04815"></a><span class="lineno"> 4815</span>&#160;    {</div><div class="line"><a name="l04816"></a><span class="lineno"> 4816</span>&#160;        <a class="code" href="classcl_1_1_image2_d.html#ac92eb515aa0d087cc63145ef4cfb536b">Image2D::operator=</a>(rhs);</div><div class="line"><a name="l04817"></a><span class="lineno"> 4817</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04818"></a><span class="lineno"> 4818</span>&#160;    }</div><div class="line"><a name="l04819"></a><span class="lineno"> 4819</span>&#160;</div><div class="line"><a name="l04823"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_g_l.html#a064cb003d315b22e6c2f719054bbf7c3"> 4823</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d_g_l.html#a064cb003d315b22e6c2f719054bbf7c3">Image2DGL</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_image2_d_g_l.html">Image2DGL</a>&amp; img) : <a class="code" href="classcl_1_1_image2_d.html">Image2D</a>(img) {}</div><div class="line"><a name="l04824"></a><span class="lineno"> 4824</span>&#160;</div><div class="line"><a name="l04828"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_g_l.html#a10b2e1e124e9f1d602d83e92af665abb"> 4828</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d_g_l.html">Image2DGL</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_image2_d_g_l.html">Image2DGL</a> &amp;img)</div><div class="line"><a name="l04829"></a><span class="lineno"> 4829</span>&#160;    {</div><div class="line"><a name="l04830"></a><span class="lineno"> 4830</span>&#160;        <a class="code" href="classcl_1_1_image2_d.html#ac92eb515aa0d087cc63145ef4cfb536b">Image2D::operator=</a>(img);</div><div class="line"><a name="l04831"></a><span class="lineno"> 4831</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04832"></a><span class="lineno"> 4832</span>&#160;    }</div><div class="line"><a name="l04833"></a><span class="lineno"> 4833</span>&#160;</div><div class="line"><a name="l04837"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_g_l.html#a7b38f17115b6098a5d8d85a4f86e6dd1"> 4837</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d_g_l.html#a7b38f17115b6098a5d8d85a4f86e6dd1">Image2DGL</a>(<a class="code" href="classcl_1_1_image2_d_g_l.html">Image2DGL</a>&amp;&amp; img) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_image2_d.html">Image2D</a>(std::move(img)) {}</div><div class="line"><a name="l04838"></a><span class="lineno"> 4838</span>&#160;</div><div class="line"><a name="l04842"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_g_l.html#a7a6a6d602378768878aeecafacd92911"> 4842</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d_g_l.html">Image2DGL</a>&amp; operator = (<a class="code" href="classcl_1_1_image2_d_g_l.html">Image2DGL</a> &amp;&amp;img)</div><div class="line"><a name="l04843"></a><span class="lineno"> 4843</span>&#160;    {</div><div class="line"><a name="l04844"></a><span class="lineno"> 4844</span>&#160;        <a class="code" href="classcl_1_1_image2_d.html#ac92eb515aa0d087cc63145ef4cfb536b">Image2D::operator=</a>(std::move(img));</div><div class="line"><a name="l04845"></a><span class="lineno"> 4845</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04846"></a><span class="lineno"> 4846</span>&#160;    }</div><div class="line"><a name="l04847"></a><span class="lineno"> 4847</span>&#160;</div><div class="line"><a name="l04848"></a><span class="lineno"> 4848</span>&#160;} CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;</div><div class="line"><a name="l04849"></a><span class="lineno"> 4849</span>&#160;<span class="preprocessor">#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS</span></div><div class="line"><a name="l04850"></a><span class="lineno"> 4850</span>&#160;</div><div class="line"><a name="l04851"></a><span class="lineno"> 4851</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l04852"></a><span class="lineno"> 4852</span>&#160;</div><div class="line"><a name="l04855"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_array.html"> 4855</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_image2_d_array.html">Image2DArray</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_image.html">Image</a></div><div class="line"><a name="l04856"></a><span class="lineno"> 4856</span>&#160;{</div><div class="line"><a name="l04857"></a><span class="lineno"> 4857</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l04858"></a><span class="lineno"> 4858</span>&#160;    <a class="code" href="classcl_1_1_image2_d_array.html">Image2DArray</a>(</div><div class="line"><a name="l04859"></a><span class="lineno"> 4859</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l04860"></a><span class="lineno"> 4860</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l04861"></a><span class="lineno"> 4861</span>&#160;        <a class="code" href="structcl_1_1_image_format.html">ImageFormat</a> format,</div><div class="line"><a name="l04862"></a><span class="lineno"> 4862</span>&#160;        size_type arraySize,</div><div class="line"><a name="l04863"></a><span class="lineno"> 4863</span>&#160;        size_type width,</div><div class="line"><a name="l04864"></a><span class="lineno"> 4864</span>&#160;        size_type height,</div><div class="line"><a name="l04865"></a><span class="lineno"> 4865</span>&#160;        size_type rowPitch,</div><div class="line"><a name="l04866"></a><span class="lineno"> 4866</span>&#160;        size_type slicePitch,</div><div class="line"><a name="l04867"></a><span class="lineno"> 4867</span>&#160;        <span class="keywordtype">void</span>* host_ptr = NULL,</div><div class="line"><a name="l04868"></a><span class="lineno"> 4868</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l04869"></a><span class="lineno"> 4869</span>&#160;    {</div><div class="line"><a name="l04870"></a><span class="lineno"> 4870</span>&#160;        cl_int error;</div><div class="line"><a name="l04871"></a><span class="lineno"> 4871</span>&#160;        cl_image_desc desc =</div><div class="line"><a name="l04872"></a><span class="lineno"> 4872</span>&#160;        {</div><div class="line"><a name="l04873"></a><span class="lineno"> 4873</span>&#160;            CL_MEM_OBJECT_IMAGE2D_ARRAY,</div><div class="line"><a name="l04874"></a><span class="lineno"> 4874</span>&#160;            width,</div><div class="line"><a name="l04875"></a><span class="lineno"> 4875</span>&#160;            height,</div><div class="line"><a name="l04876"></a><span class="lineno"> 4876</span>&#160;            0,       <span class="comment">// depth (unused)</span></div><div class="line"><a name="l04877"></a><span class="lineno"> 4877</span>&#160;            arraySize,</div><div class="line"><a name="l04878"></a><span class="lineno"> 4878</span>&#160;            rowPitch,</div><div class="line"><a name="l04879"></a><span class="lineno"> 4879</span>&#160;            slicePitch,</div><div class="line"><a name="l04880"></a><span class="lineno"> 4880</span>&#160;            0, 0, 0</div><div class="line"><a name="l04881"></a><span class="lineno"> 4881</span>&#160;        };</div><div class="line"><a name="l04882"></a><span class="lineno"> 4882</span>&#160;        object_ = ::clCreateImage(</div><div class="line"><a name="l04883"></a><span class="lineno"> 4883</span>&#160;            context(), </div><div class="line"><a name="l04884"></a><span class="lineno"> 4884</span>&#160;            flags, </div><div class="line"><a name="l04885"></a><span class="lineno"> 4885</span>&#160;            &amp;format, </div><div class="line"><a name="l04886"></a><span class="lineno"> 4886</span>&#160;            &amp;desc, </div><div class="line"><a name="l04887"></a><span class="lineno"> 4887</span>&#160;            host_ptr, </div><div class="line"><a name="l04888"></a><span class="lineno"> 4888</span>&#160;            &amp;error);</div><div class="line"><a name="l04889"></a><span class="lineno"> 4889</span>&#160;</div><div class="line"><a name="l04890"></a><span class="lineno"> 4890</span>&#160;        detail::errHandler(error, __CREATE_IMAGE_ERR);</div><div class="line"><a name="l04891"></a><span class="lineno"> 4891</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l04892"></a><span class="lineno"> 4892</span>&#160;            *err = error;</div><div class="line"><a name="l04893"></a><span class="lineno"> 4893</span>&#160;        }</div><div class="line"><a name="l04894"></a><span class="lineno"> 4894</span>&#160;    }</div><div class="line"><a name="l04895"></a><span class="lineno"> 4895</span>&#160;</div><div class="line"><a name="l04896"></a><span class="lineno"> 4896</span>&#160;    <a class="code" href="classcl_1_1_image2_d_array.html">Image2DArray</a>() { }</div><div class="line"><a name="l04897"></a><span class="lineno"> 4897</span>&#160;    </div><div class="line"><a name="l04905"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_array.html#a8c16539dc725c60ef4ff4680f8353507"> 4905</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_image2_d_array.html#a8c16539dc725c60ef4ff4680f8353507">Image2DArray</a>(<span class="keyword">const</span> cl_mem&amp; imageArray, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : <a class="code" href="classcl_1_1_image.html">Image</a>(imageArray, retainObject) { }</div><div class="line"><a name="l04906"></a><span class="lineno"> 4906</span>&#160;</div><div class="line"><a name="l04907"></a><span class="lineno"> 4907</span>&#160;    <a class="code" href="classcl_1_1_image2_d_array.html">Image2DArray</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l04908"></a><span class="lineno"> 4908</span>&#160;    {</div><div class="line"><a name="l04909"></a><span class="lineno"> 4909</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(rhs);</div><div class="line"><a name="l04910"></a><span class="lineno"> 4910</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04911"></a><span class="lineno"> 4911</span>&#160;    }</div><div class="line"><a name="l04912"></a><span class="lineno"> 4912</span>&#160;</div><div class="line"><a name="l04916"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_array.html#a4cb521f49a58328fcf7d8d31ba81f573"> 4916</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d_array.html#a4cb521f49a58328fcf7d8d31ba81f573">Image2DArray</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_image2_d_array.html">Image2DArray</a>&amp; img) : <a class="code" href="classcl_1_1_image.html">Image</a>(img) {}</div><div class="line"><a name="l04917"></a><span class="lineno"> 4917</span>&#160;</div><div class="line"><a name="l04921"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_array.html#af544260cf389184c81a62b2de5c9b96c"> 4921</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d_array.html">Image2DArray</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_image2_d_array.html">Image2DArray</a> &amp;img)</div><div class="line"><a name="l04922"></a><span class="lineno"> 4922</span>&#160;    {</div><div class="line"><a name="l04923"></a><span class="lineno"> 4923</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(img);</div><div class="line"><a name="l04924"></a><span class="lineno"> 4924</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04925"></a><span class="lineno"> 4925</span>&#160;    }</div><div class="line"><a name="l04926"></a><span class="lineno"> 4926</span>&#160;</div><div class="line"><a name="l04930"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_array.html#aad8b0d3671dd537ffa8850f50c0cfbd9"> 4930</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d_array.html#aad8b0d3671dd537ffa8850f50c0cfbd9">Image2DArray</a>(<a class="code" href="classcl_1_1_image2_d_array.html">Image2DArray</a>&amp;&amp; img) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_image.html">Image</a>(std::move(img)) {}</div><div class="line"><a name="l04931"></a><span class="lineno"> 4931</span>&#160;</div><div class="line"><a name="l04935"></a><span class="lineno"><a class="line" href="classcl_1_1_image2_d_array.html#a6e7f7e00cf4aa60ceed7e8d27d02b0f5"> 4935</a></span>&#160;    <a class="code" href="classcl_1_1_image2_d_array.html">Image2DArray</a>&amp; operator = (<a class="code" href="classcl_1_1_image2_d_array.html">Image2DArray</a> &amp;&amp;img)</div><div class="line"><a name="l04936"></a><span class="lineno"> 4936</span>&#160;    {</div><div class="line"><a name="l04937"></a><span class="lineno"> 4937</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(std::move(img));</div><div class="line"><a name="l04938"></a><span class="lineno"> 4938</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l04939"></a><span class="lineno"> 4939</span>&#160;    }</div><div class="line"><a name="l04940"></a><span class="lineno"> 4940</span>&#160;};</div><div class="line"><a name="l04941"></a><span class="lineno"> 4941</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l04942"></a><span class="lineno"> 4942</span>&#160;</div><div class="line"><a name="l04949"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d.html"> 4949</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_image3_d.html">Image3D</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_image.html">Image</a></div><div class="line"><a name="l04950"></a><span class="lineno"> 4950</span>&#160;{</div><div class="line"><a name="l04951"></a><span class="lineno"> 4951</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l04956"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d.html#acf4e89070870a37289296e1716322c7f"> 4956</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d.html#acf4e89070870a37289296e1716322c7f">Image3D</a>(</div><div class="line"><a name="l04957"></a><span class="lineno"> 4957</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l04958"></a><span class="lineno"> 4958</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l04959"></a><span class="lineno"> 4959</span>&#160;        <a class="code" href="structcl_1_1_image_format.html">ImageFormat</a> format,</div><div class="line"><a name="l04960"></a><span class="lineno"> 4960</span>&#160;        size_type width,</div><div class="line"><a name="l04961"></a><span class="lineno"> 4961</span>&#160;        size_type height,</div><div class="line"><a name="l04962"></a><span class="lineno"> 4962</span>&#160;        size_type depth,</div><div class="line"><a name="l04963"></a><span class="lineno"> 4963</span>&#160;        size_type row_pitch = 0,</div><div class="line"><a name="l04964"></a><span class="lineno"> 4964</span>&#160;        size_type slice_pitch = 0,</div><div class="line"><a name="l04965"></a><span class="lineno"> 4965</span>&#160;        <span class="keywordtype">void</span>* host_ptr = NULL,</div><div class="line"><a name="l04966"></a><span class="lineno"> 4966</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l04967"></a><span class="lineno"> 4967</span>&#160;    {</div><div class="line"><a name="l04968"></a><span class="lineno"> 4968</span>&#160;        cl_int error;</div><div class="line"><a name="l04969"></a><span class="lineno"> 4969</span>&#160;        <span class="keywordtype">bool</span> useCreateImage;</div><div class="line"><a name="l04970"></a><span class="lineno"> 4970</span>&#160;</div><div class="line"><a name="l04971"></a><span class="lineno"> 4971</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l04972"></a><span class="lineno"> 4972</span>&#160;        <span class="comment">// Run-time decision based on the actual platform</span></div><div class="line"><a name="l04973"></a><span class="lineno"> 4973</span>&#160;        {</div><div class="line"><a name="l04974"></a><span class="lineno"> 4974</span>&#160;            cl_uint version = detail::getContextPlatformVersion(context());</div><div class="line"><a name="l04975"></a><span class="lineno"> 4975</span>&#160;            useCreateImage = (version &gt;= 0x10002); <span class="comment">// OpenCL 1.2 or above</span></div><div class="line"><a name="l04976"></a><span class="lineno"> 4976</span>&#160;        }</div><div class="line"><a name="l04977"></a><span class="lineno"> 4977</span>&#160;<span class="preprocessor">#elif CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l04978"></a><span class="lineno"> 4978</span>&#160;        useCreateImage = <span class="keyword">true</span>;</div><div class="line"><a name="l04979"></a><span class="lineno"> 4979</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l04980"></a><span class="lineno"> 4980</span>&#160;        useCreateImage = <span class="keyword">false</span>;</div><div class="line"><a name="l04981"></a><span class="lineno"> 4981</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l04982"></a><span class="lineno"> 4982</span>&#160;</div><div class="line"><a name="l04983"></a><span class="lineno"> 4983</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l04984"></a><span class="lineno"> 4984</span>&#160;        <span class="keywordflow">if</span> (useCreateImage)</div><div class="line"><a name="l04985"></a><span class="lineno"> 4985</span>&#160;        {</div><div class="line"><a name="l04986"></a><span class="lineno"> 4986</span>&#160;            cl_image_desc desc =</div><div class="line"><a name="l04987"></a><span class="lineno"> 4987</span>&#160;            {</div><div class="line"><a name="l04988"></a><span class="lineno"> 4988</span>&#160;                CL_MEM_OBJECT_IMAGE3D,</div><div class="line"><a name="l04989"></a><span class="lineno"> 4989</span>&#160;                width,</div><div class="line"><a name="l04990"></a><span class="lineno"> 4990</span>&#160;                height,</div><div class="line"><a name="l04991"></a><span class="lineno"> 4991</span>&#160;                depth,</div><div class="line"><a name="l04992"></a><span class="lineno"> 4992</span>&#160;                0,      <span class="comment">// array size (unused)</span></div><div class="line"><a name="l04993"></a><span class="lineno"> 4993</span>&#160;                row_pitch,</div><div class="line"><a name="l04994"></a><span class="lineno"> 4994</span>&#160;                slice_pitch,</div><div class="line"><a name="l04995"></a><span class="lineno"> 4995</span>&#160;                0, 0, 0</div><div class="line"><a name="l04996"></a><span class="lineno"> 4996</span>&#160;            };</div><div class="line"><a name="l04997"></a><span class="lineno"> 4997</span>&#160;            object_ = ::clCreateImage(</div><div class="line"><a name="l04998"></a><span class="lineno"> 4998</span>&#160;                context(), </div><div class="line"><a name="l04999"></a><span class="lineno"> 4999</span>&#160;                flags, </div><div class="line"><a name="l05000"></a><span class="lineno"> 5000</span>&#160;                &amp;format, </div><div class="line"><a name="l05001"></a><span class="lineno"> 5001</span>&#160;                &amp;desc, </div><div class="line"><a name="l05002"></a><span class="lineno"> 5002</span>&#160;                host_ptr, </div><div class="line"><a name="l05003"></a><span class="lineno"> 5003</span>&#160;                &amp;error);</div><div class="line"><a name="l05004"></a><span class="lineno"> 5004</span>&#160;</div><div class="line"><a name="l05005"></a><span class="lineno"> 5005</span>&#160;            detail::errHandler(error, __CREATE_IMAGE_ERR);</div><div class="line"><a name="l05006"></a><span class="lineno"> 5006</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05007"></a><span class="lineno"> 5007</span>&#160;                *err = error;</div><div class="line"><a name="l05008"></a><span class="lineno"> 5008</span>&#160;            }</div><div class="line"><a name="l05009"></a><span class="lineno"> 5009</span>&#160;        }</div><div class="line"><a name="l05010"></a><span class="lineno"> 5010</span>&#160;<span class="preprocessor">#endif  // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l05011"></a><span class="lineno"> 5011</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l05012"></a><span class="lineno"> 5012</span>&#160;        <span class="keywordflow">if</span> (!useCreateImage)</div><div class="line"><a name="l05013"></a><span class="lineno"> 5013</span>&#160;        {</div><div class="line"><a name="l05014"></a><span class="lineno"> 5014</span>&#160;            object_ = ::clCreateImage3D(</div><div class="line"><a name="l05015"></a><span class="lineno"> 5015</span>&#160;                context(), flags, &amp;format, width, height, depth, row_pitch,</div><div class="line"><a name="l05016"></a><span class="lineno"> 5016</span>&#160;                slice_pitch, host_ptr, &amp;error);</div><div class="line"><a name="l05017"></a><span class="lineno"> 5017</span>&#160;</div><div class="line"><a name="l05018"></a><span class="lineno"> 5018</span>&#160;            detail::errHandler(error, __CREATE_IMAGE3D_ERR);</div><div class="line"><a name="l05019"></a><span class="lineno"> 5019</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05020"></a><span class="lineno"> 5020</span>&#160;                *err = error;</div><div class="line"><a name="l05021"></a><span class="lineno"> 5021</span>&#160;            }</div><div class="line"><a name="l05022"></a><span class="lineno"> 5022</span>&#160;        }</div><div class="line"><a name="l05023"></a><span class="lineno"> 5023</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 120</span></div><div class="line"><a name="l05024"></a><span class="lineno"> 5024</span>&#160;    }</div><div class="line"><a name="l05025"></a><span class="lineno"> 5025</span>&#160;</div><div class="line"><a name="l05027"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d.html#a9243ebeec223f4c6b9681e58b8844214"> 5027</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d.html#a9243ebeec223f4c6b9681e58b8844214">Image3D</a>() : <a class="code" href="classcl_1_1_image.html">Image</a>() { }</div><div class="line"><a name="l05028"></a><span class="lineno"> 5028</span>&#160;</div><div class="line"><a name="l05036"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d.html#a28f004720b4cc85a902d218e3dad680d"> 5036</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_image3_d.html#a28f004720b4cc85a902d218e3dad680d">Image3D</a>(<span class="keyword">const</span> cl_mem&amp; image3D, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l05037"></a><span class="lineno"> 5037</span>&#160;        <a class="code" href="classcl_1_1_image.html">Image</a>(image3D, retainObject) { }</div><div class="line"><a name="l05038"></a><span class="lineno"> 5038</span>&#160;</div><div class="line"><a name="l05043"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d.html#a108db5f42ee6e0a333ee820548b1d390"> 5043</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d.html">Image3D</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l05044"></a><span class="lineno"> 5044</span>&#160;    {</div><div class="line"><a name="l05045"></a><span class="lineno"> 5045</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(rhs);</div><div class="line"><a name="l05046"></a><span class="lineno"> 5046</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05047"></a><span class="lineno"> 5047</span>&#160;    }</div><div class="line"><a name="l05048"></a><span class="lineno"> 5048</span>&#160;</div><div class="line"><a name="l05052"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d.html#afbb7d12774e435bc5cb33c13520a2764"> 5052</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d.html#afbb7d12774e435bc5cb33c13520a2764">Image3D</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_image3_d.html">Image3D</a>&amp; img) : <a class="code" href="classcl_1_1_image.html">Image</a>(img) {}</div><div class="line"><a name="l05053"></a><span class="lineno"> 5053</span>&#160;</div><div class="line"><a name="l05057"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d.html#a7ad39620a1c8feefc13c08df53512462"> 5057</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d.html">Image3D</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_image3_d.html">Image3D</a> &amp;img)</div><div class="line"><a name="l05058"></a><span class="lineno"> 5058</span>&#160;    {</div><div class="line"><a name="l05059"></a><span class="lineno"> 5059</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(img);</div><div class="line"><a name="l05060"></a><span class="lineno"> 5060</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05061"></a><span class="lineno"> 5061</span>&#160;    }</div><div class="line"><a name="l05062"></a><span class="lineno"> 5062</span>&#160;</div><div class="line"><a name="l05066"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d.html#ae07b7a7f4004a6e78ece40957a6f5899"> 5066</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d.html#ae07b7a7f4004a6e78ece40957a6f5899">Image3D</a>(<a class="code" href="classcl_1_1_image3_d.html">Image3D</a>&amp;&amp; img) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_image.html">Image</a>(std::move(img)) {}</div><div class="line"><a name="l05067"></a><span class="lineno"> 5067</span>&#160;</div><div class="line"><a name="l05071"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d.html#a498f4ca3c183f5ed8e191b8e1b7d6f6c"> 5071</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d.html">Image3D</a>&amp; operator = (<a class="code" href="classcl_1_1_image3_d.html">Image3D</a> &amp;&amp;img)</div><div class="line"><a name="l05072"></a><span class="lineno"> 5072</span>&#160;    {</div><div class="line"><a name="l05073"></a><span class="lineno"> 5073</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(std::move(img));</div><div class="line"><a name="l05074"></a><span class="lineno"> 5074</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05075"></a><span class="lineno"> 5075</span>&#160;    }</div><div class="line"><a name="l05076"></a><span class="lineno"> 5076</span>&#160;};</div><div class="line"><a name="l05077"></a><span class="lineno"> 5077</span>&#160;</div><div class="line"><a name="l05078"></a><span class="lineno"> 5078</span>&#160;<span class="preprocessor">#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)</span></div><div class="line"><a name="l05079"></a><span class="lineno"> 5079</span>&#160;</div><div class="line"><a name="l05087"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d_g_l.html"> 5087</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_image3_d_g_l.html">Image3DGL</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_image3_d.html">Image3D</a></div><div class="line"><a name="l05088"></a><span class="lineno"> 5088</span>&#160;{</div><div class="line"><a name="l05089"></a><span class="lineno"> 5089</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l05095"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d_g_l.html#a887ef5a5f73871e5419d9cd48cb0aae8"> 5095</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d_g_l.html#a887ef5a5f73871e5419d9cd48cb0aae8">Image3DGL</a>(</div><div class="line"><a name="l05096"></a><span class="lineno"> 5096</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l05097"></a><span class="lineno"> 5097</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l05098"></a><span class="lineno"> 5098</span>&#160;        cl_GLenum target,</div><div class="line"><a name="l05099"></a><span class="lineno"> 5099</span>&#160;        cl_GLint  miplevel,</div><div class="line"><a name="l05100"></a><span class="lineno"> 5100</span>&#160;        cl_GLuint texobj,</div><div class="line"><a name="l05101"></a><span class="lineno"> 5101</span>&#160;        cl_int * err = NULL)</div><div class="line"><a name="l05102"></a><span class="lineno"> 5102</span>&#160;    {</div><div class="line"><a name="l05103"></a><span class="lineno"> 5103</span>&#160;        cl_int error;</div><div class="line"><a name="l05104"></a><span class="lineno"> 5104</span>&#160;        object_ = ::clCreateFromGLTexture3D(</div><div class="line"><a name="l05105"></a><span class="lineno"> 5105</span>&#160;            context(),</div><div class="line"><a name="l05106"></a><span class="lineno"> 5106</span>&#160;            flags,</div><div class="line"><a name="l05107"></a><span class="lineno"> 5107</span>&#160;            target,</div><div class="line"><a name="l05108"></a><span class="lineno"> 5108</span>&#160;            miplevel,</div><div class="line"><a name="l05109"></a><span class="lineno"> 5109</span>&#160;            texobj,</div><div class="line"><a name="l05110"></a><span class="lineno"> 5110</span>&#160;            &amp;error);</div><div class="line"><a name="l05111"></a><span class="lineno"> 5111</span>&#160;</div><div class="line"><a name="l05112"></a><span class="lineno"> 5112</span>&#160;        detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR);</div><div class="line"><a name="l05113"></a><span class="lineno"> 5113</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05114"></a><span class="lineno"> 5114</span>&#160;            *err = error;</div><div class="line"><a name="l05115"></a><span class="lineno"> 5115</span>&#160;        }</div><div class="line"><a name="l05116"></a><span class="lineno"> 5116</span>&#160;    }</div><div class="line"><a name="l05117"></a><span class="lineno"> 5117</span>&#160;</div><div class="line"><a name="l05119"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d_g_l.html#a21a8fd551430095711413e831cd42ddd"> 5119</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d_g_l.html#a21a8fd551430095711413e831cd42ddd">Image3DGL</a>() : <a class="code" href="classcl_1_1_image3_d.html">Image3D</a>() { }</div><div class="line"><a name="l05120"></a><span class="lineno"> 5120</span>&#160;</div><div class="line"><a name="l05128"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d_g_l.html#ae4379054235116bf4e7f1107914d0ce7"> 5128</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_image3_d_g_l.html#ae4379054235116bf4e7f1107914d0ce7">Image3DGL</a>(<span class="keyword">const</span> cl_mem&amp; image, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l05129"></a><span class="lineno"> 5129</span>&#160;        <a class="code" href="classcl_1_1_image3_d.html">Image3D</a>(image, retainObject) { }</div><div class="line"><a name="l05130"></a><span class="lineno"> 5130</span>&#160;</div><div class="line"><a name="l05135"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d_g_l.html#a0e85acf1f34fc2bb7b5362c95afed785"> 5135</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d_g_l.html">Image3DGL</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l05136"></a><span class="lineno"> 5136</span>&#160;    {</div><div class="line"><a name="l05137"></a><span class="lineno"> 5137</span>&#160;        <a class="code" href="classcl_1_1_image3_d.html#a108db5f42ee6e0a333ee820548b1d390">Image3D::operator=</a>(rhs);</div><div class="line"><a name="l05138"></a><span class="lineno"> 5138</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05139"></a><span class="lineno"> 5139</span>&#160;    }</div><div class="line"><a name="l05140"></a><span class="lineno"> 5140</span>&#160;</div><div class="line"><a name="l05144"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d_g_l.html#a547ae772ea5529329b278d8d551518f4"> 5144</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d_g_l.html#a547ae772ea5529329b278d8d551518f4">Image3DGL</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_image3_d_g_l.html">Image3DGL</a>&amp; img) : <a class="code" href="classcl_1_1_image3_d.html">Image3D</a>(img) {}</div><div class="line"><a name="l05145"></a><span class="lineno"> 5145</span>&#160;</div><div class="line"><a name="l05149"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d_g_l.html#ab06b629a6327d2931c6895d798504730"> 5149</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d_g_l.html">Image3DGL</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_image3_d_g_l.html">Image3DGL</a> &amp;img)</div><div class="line"><a name="l05150"></a><span class="lineno"> 5150</span>&#160;    {</div><div class="line"><a name="l05151"></a><span class="lineno"> 5151</span>&#160;        <a class="code" href="classcl_1_1_image3_d.html#a108db5f42ee6e0a333ee820548b1d390">Image3D::operator=</a>(img);</div><div class="line"><a name="l05152"></a><span class="lineno"> 5152</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05153"></a><span class="lineno"> 5153</span>&#160;    }</div><div class="line"><a name="l05154"></a><span class="lineno"> 5154</span>&#160;</div><div class="line"><a name="l05158"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d_g_l.html#a43fbcd25852d39c83a789699921ef7aa"> 5158</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d_g_l.html#a43fbcd25852d39c83a789699921ef7aa">Image3DGL</a>(<a class="code" href="classcl_1_1_image3_d_g_l.html">Image3DGL</a>&amp;&amp; img) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_image3_d.html">Image3D</a>(std::move(img)) {}</div><div class="line"><a name="l05159"></a><span class="lineno"> 5159</span>&#160;</div><div class="line"><a name="l05163"></a><span class="lineno"><a class="line" href="classcl_1_1_image3_d_g_l.html#a909150f0ac62ddd907bc71843916ba44"> 5163</a></span>&#160;    <a class="code" href="classcl_1_1_image3_d_g_l.html">Image3DGL</a>&amp; operator = (<a class="code" href="classcl_1_1_image3_d_g_l.html">Image3DGL</a> &amp;&amp;img)</div><div class="line"><a name="l05164"></a><span class="lineno"> 5164</span>&#160;    {</div><div class="line"><a name="l05165"></a><span class="lineno"> 5165</span>&#160;        <a class="code" href="classcl_1_1_image3_d.html#a108db5f42ee6e0a333ee820548b1d390">Image3D::operator=</a>(std::move(img));</div><div class="line"><a name="l05166"></a><span class="lineno"> 5166</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05167"></a><span class="lineno"> 5167</span>&#160;    }</div><div class="line"><a name="l05168"></a><span class="lineno"> 5168</span>&#160;};</div><div class="line"><a name="l05169"></a><span class="lineno"> 5169</span>&#160;<span class="preprocessor">#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS</span></div><div class="line"><a name="l05170"></a><span class="lineno"> 5170</span>&#160;</div><div class="line"><a name="l05171"></a><span class="lineno"> 5171</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l05172"></a><span class="lineno"> 5172</span>&#160;</div><div class="line"><a name="l05178"></a><span class="lineno"><a class="line" href="classcl_1_1_image_g_l.html"> 5178</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_image_g_l.html">ImageGL</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_image.html">Image</a></div><div class="line"><a name="l05179"></a><span class="lineno"> 5179</span>&#160;{</div><div class="line"><a name="l05180"></a><span class="lineno"> 5180</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l05181"></a><span class="lineno"> 5181</span>&#160;    <a class="code" href="classcl_1_1_image_g_l.html">ImageGL</a>(</div><div class="line"><a name="l05182"></a><span class="lineno"> 5182</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l05183"></a><span class="lineno"> 5183</span>&#160;        cl_mem_flags flags,</div><div class="line"><a name="l05184"></a><span class="lineno"> 5184</span>&#160;        cl_GLenum target,</div><div class="line"><a name="l05185"></a><span class="lineno"> 5185</span>&#160;        cl_GLint  miplevel,</div><div class="line"><a name="l05186"></a><span class="lineno"> 5186</span>&#160;        cl_GLuint texobj,</div><div class="line"><a name="l05187"></a><span class="lineno"> 5187</span>&#160;        cl_int * err = NULL)</div><div class="line"><a name="l05188"></a><span class="lineno"> 5188</span>&#160;    {</div><div class="line"><a name="l05189"></a><span class="lineno"> 5189</span>&#160;        cl_int error;</div><div class="line"><a name="l05190"></a><span class="lineno"> 5190</span>&#160;        object_ = ::clCreateFromGLTexture(</div><div class="line"><a name="l05191"></a><span class="lineno"> 5191</span>&#160;            context(), </div><div class="line"><a name="l05192"></a><span class="lineno"> 5192</span>&#160;            flags, </div><div class="line"><a name="l05193"></a><span class="lineno"> 5193</span>&#160;            target,</div><div class="line"><a name="l05194"></a><span class="lineno"> 5194</span>&#160;            miplevel,</div><div class="line"><a name="l05195"></a><span class="lineno"> 5195</span>&#160;            texobj,</div><div class="line"><a name="l05196"></a><span class="lineno"> 5196</span>&#160;            &amp;error);</div><div class="line"><a name="l05197"></a><span class="lineno"> 5197</span>&#160;</div><div class="line"><a name="l05198"></a><span class="lineno"> 5198</span>&#160;        detail::errHandler(error, __CREATE_GL_TEXTURE_ERR);</div><div class="line"><a name="l05199"></a><span class="lineno"> 5199</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05200"></a><span class="lineno"> 5200</span>&#160;            *err = error;</div><div class="line"><a name="l05201"></a><span class="lineno"> 5201</span>&#160;        }</div><div class="line"><a name="l05202"></a><span class="lineno"> 5202</span>&#160;    }</div><div class="line"><a name="l05203"></a><span class="lineno"> 5203</span>&#160;</div><div class="line"><a name="l05204"></a><span class="lineno"> 5204</span>&#160;    <a class="code" href="classcl_1_1_image_g_l.html">ImageGL</a>() : <a class="code" href="classcl_1_1_image.html">Image</a>() { }</div><div class="line"><a name="l05205"></a><span class="lineno"> 5205</span>&#160;    </div><div class="line"><a name="l05213"></a><span class="lineno"><a class="line" href="classcl_1_1_image_g_l.html#afc06fdce130a034e8dca89ac910a93ab"> 5213</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_image_g_l.html#afc06fdce130a034e8dca89ac910a93ab">ImageGL</a>(<span class="keyword">const</span> cl_mem&amp; image, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l05214"></a><span class="lineno"> 5214</span>&#160;        <a class="code" href="classcl_1_1_image.html">Image</a>(image, retainObject) { }</div><div class="line"><a name="l05215"></a><span class="lineno"> 5215</span>&#160;</div><div class="line"><a name="l05216"></a><span class="lineno"> 5216</span>&#160;    <a class="code" href="classcl_1_1_image_g_l.html">ImageGL</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l05217"></a><span class="lineno"> 5217</span>&#160;    {</div><div class="line"><a name="l05218"></a><span class="lineno"> 5218</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(rhs);</div><div class="line"><a name="l05219"></a><span class="lineno"> 5219</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05220"></a><span class="lineno"> 5220</span>&#160;    }</div><div class="line"><a name="l05221"></a><span class="lineno"> 5221</span>&#160;</div><div class="line"><a name="l05225"></a><span class="lineno"><a class="line" href="classcl_1_1_image_g_l.html#a0d65fbe2960edcd3b2ba6f857d98b813"> 5225</a></span>&#160;    <a class="code" href="classcl_1_1_image_g_l.html#a0d65fbe2960edcd3b2ba6f857d98b813">ImageGL</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_image_g_l.html">ImageGL</a>&amp; img) : <a class="code" href="classcl_1_1_image.html">Image</a>(img) {}</div><div class="line"><a name="l05226"></a><span class="lineno"> 5226</span>&#160;</div><div class="line"><a name="l05230"></a><span class="lineno"><a class="line" href="classcl_1_1_image_g_l.html#ad1f85fdf551d1503c41a1ee88eada0ae"> 5230</a></span>&#160;    <a class="code" href="classcl_1_1_image_g_l.html">ImageGL</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_image_g_l.html">ImageGL</a> &amp;img)</div><div class="line"><a name="l05231"></a><span class="lineno"> 5231</span>&#160;    {</div><div class="line"><a name="l05232"></a><span class="lineno"> 5232</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(img);</div><div class="line"><a name="l05233"></a><span class="lineno"> 5233</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05234"></a><span class="lineno"> 5234</span>&#160;    }</div><div class="line"><a name="l05235"></a><span class="lineno"> 5235</span>&#160;</div><div class="line"><a name="l05239"></a><span class="lineno"><a class="line" href="classcl_1_1_image_g_l.html#a838ca2ca2a61984f58fc4b4bba8ff225"> 5239</a></span>&#160;    <a class="code" href="classcl_1_1_image_g_l.html#a838ca2ca2a61984f58fc4b4bba8ff225">ImageGL</a>(<a class="code" href="classcl_1_1_image_g_l.html">ImageGL</a>&amp;&amp; img) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_image.html">Image</a>(std::move(img)) {}</div><div class="line"><a name="l05240"></a><span class="lineno"> 5240</span>&#160;</div><div class="line"><a name="l05244"></a><span class="lineno"><a class="line" href="classcl_1_1_image_g_l.html#a071bab7f0d9fd09641b139243097a157"> 5244</a></span>&#160;    <a class="code" href="classcl_1_1_image_g_l.html">ImageGL</a>&amp; operator = (<a class="code" href="classcl_1_1_image_g_l.html">ImageGL</a> &amp;&amp;img)</div><div class="line"><a name="l05245"></a><span class="lineno"> 5245</span>&#160;    {</div><div class="line"><a name="l05246"></a><span class="lineno"> 5246</span>&#160;        <a class="code" href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">Image::operator=</a>(std::move(img));</div><div class="line"><a name="l05247"></a><span class="lineno"> 5247</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05248"></a><span class="lineno"> 5248</span>&#160;    }</div><div class="line"><a name="l05249"></a><span class="lineno"> 5249</span>&#160;};</div><div class="line"><a name="l05250"></a><span class="lineno"> 5250</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l05251"></a><span class="lineno"> 5251</span>&#160;</div><div class="line"><a name="l05252"></a><span class="lineno"> 5252</span>&#160;</div><div class="line"><a name="l05253"></a><span class="lineno"> 5253</span>&#160;</div><div class="line"><a name="l05254"></a><span class="lineno"> 5254</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l05255"></a><span class="lineno"> 5255</span>&#160;</div><div class="line"><a name="l05261"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html"> 5261</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_pipe.html">Pipe</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1_memory.html">Memory</a></div><div class="line"><a name="l05262"></a><span class="lineno"> 5262</span>&#160;{</div><div class="line"><a name="l05263"></a><span class="lineno"> 5263</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l05264"></a><span class="lineno"> 5264</span>&#160;</div><div class="line"><a name="l05274"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html#a18570ac9927752da9c1678d0d27dd606"> 5274</a></span>&#160;    <a class="code" href="classcl_1_1_pipe.html#a18570ac9927752da9c1678d0d27dd606">Pipe</a>(</div><div class="line"><a name="l05275"></a><span class="lineno"> 5275</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l05276"></a><span class="lineno"> 5276</span>&#160;        cl_uint packet_size,</div><div class="line"><a name="l05277"></a><span class="lineno"> 5277</span>&#160;        cl_uint max_packets,</div><div class="line"><a name="l05278"></a><span class="lineno"> 5278</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l05279"></a><span class="lineno"> 5279</span>&#160;    {</div><div class="line"><a name="l05280"></a><span class="lineno"> 5280</span>&#160;        cl_int error;</div><div class="line"><a name="l05281"></a><span class="lineno"> 5281</span>&#160;</div><div class="line"><a name="l05282"></a><span class="lineno"> 5282</span>&#160;        cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS;</div><div class="line"><a name="l05283"></a><span class="lineno"> 5283</span>&#160;        object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, <span class="keyword">nullptr</span>, &amp;error);</div><div class="line"><a name="l05284"></a><span class="lineno"> 5284</span>&#160;</div><div class="line"><a name="l05285"></a><span class="lineno"> 5285</span>&#160;        detail::errHandler(error, __CREATE_PIPE_ERR);</div><div class="line"><a name="l05286"></a><span class="lineno"> 5286</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05287"></a><span class="lineno"> 5287</span>&#160;            *err = error;</div><div class="line"><a name="l05288"></a><span class="lineno"> 5288</span>&#160;        }</div><div class="line"><a name="l05289"></a><span class="lineno"> 5289</span>&#160;    }</div><div class="line"><a name="l05290"></a><span class="lineno"> 5290</span>&#160;</div><div class="line"><a name="l05299"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html#a462eff8303e507a22bfa7ed2cc6ae3b3"> 5299</a></span>&#160;    <a class="code" href="classcl_1_1_pipe.html#a462eff8303e507a22bfa7ed2cc6ae3b3">Pipe</a>(</div><div class="line"><a name="l05300"></a><span class="lineno"> 5300</span>&#160;        cl_uint packet_size,</div><div class="line"><a name="l05301"></a><span class="lineno"> 5301</span>&#160;        cl_uint max_packets,</div><div class="line"><a name="l05302"></a><span class="lineno"> 5302</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l05303"></a><span class="lineno"> 5303</span>&#160;    {</div><div class="line"><a name="l05304"></a><span class="lineno"> 5304</span>&#160;        cl_int error;</div><div class="line"><a name="l05305"></a><span class="lineno"> 5305</span>&#160;</div><div class="line"><a name="l05306"></a><span class="lineno"> 5306</span>&#160;        <a class="code" href="classcl_1_1_context.html">Context</a> context = <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">Context::getDefault</a>(err);</div><div class="line"><a name="l05307"></a><span class="lineno"> 5307</span>&#160;</div><div class="line"><a name="l05308"></a><span class="lineno"> 5308</span>&#160;        cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS;</div><div class="line"><a name="l05309"></a><span class="lineno"> 5309</span>&#160;        object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, <span class="keyword">nullptr</span>, &amp;error);</div><div class="line"><a name="l05310"></a><span class="lineno"> 5310</span>&#160;</div><div class="line"><a name="l05311"></a><span class="lineno"> 5311</span>&#160;        detail::errHandler(error, __CREATE_PIPE_ERR);</div><div class="line"><a name="l05312"></a><span class="lineno"> 5312</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05313"></a><span class="lineno"> 5313</span>&#160;            *err = error;</div><div class="line"><a name="l05314"></a><span class="lineno"> 5314</span>&#160;        }</div><div class="line"><a name="l05315"></a><span class="lineno"> 5315</span>&#160;    }</div><div class="line"><a name="l05316"></a><span class="lineno"> 5316</span>&#160;</div><div class="line"><a name="l05318"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html#a3bac3cb8d2b0d4096ef07fa03a0cafd8"> 5318</a></span>&#160;    <a class="code" href="classcl_1_1_pipe.html#a3bac3cb8d2b0d4096ef07fa03a0cafd8">Pipe</a>() : <a class="code" href="classcl_1_1_memory.html">Memory</a>() { }</div><div class="line"><a name="l05319"></a><span class="lineno"> 5319</span>&#160;</div><div class="line"><a name="l05327"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html#aab41e4a35cf93fccb645734eff752724"> 5327</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_pipe.html#aab41e4a35cf93fccb645734eff752724">Pipe</a>(<span class="keyword">const</span> cl_mem&amp; pipe, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) :</div><div class="line"><a name="l05328"></a><span class="lineno"> 5328</span>&#160;        <a class="code" href="classcl_1_1_memory.html">Memory</a>(pipe, retainObject) { }</div><div class="line"><a name="l05329"></a><span class="lineno"> 5329</span>&#160;</div><div class="line"><a name="l05334"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html#a37da325ab3af72cd7d8e717d9ed5e19e"> 5334</a></span>&#160;    <a class="code" href="classcl_1_1_pipe.html">Pipe</a>&amp; operator = (<span class="keyword">const</span> cl_mem&amp; rhs)</div><div class="line"><a name="l05335"></a><span class="lineno"> 5335</span>&#160;    {</div><div class="line"><a name="l05336"></a><span class="lineno"> 5336</span>&#160;        <a class="code" href="classcl_1_1_memory.html#aa6cd4c07a111c6baa3195bee2a447dad">Memory::operator=</a>(rhs);</div><div class="line"><a name="l05337"></a><span class="lineno"> 5337</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05338"></a><span class="lineno"> 5338</span>&#160;    }</div><div class="line"><a name="l05339"></a><span class="lineno"> 5339</span>&#160;</div><div class="line"><a name="l05343"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html#a58f2c67c39bcbbfd9990a7c01266cda5"> 5343</a></span>&#160;    <a class="code" href="classcl_1_1_pipe.html#a58f2c67c39bcbbfd9990a7c01266cda5">Pipe</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_pipe.html">Pipe</a>&amp; pipe) : <a class="code" href="classcl_1_1_memory.html">Memory</a>(pipe) {}</div><div class="line"><a name="l05344"></a><span class="lineno"> 5344</span>&#160;</div><div class="line"><a name="l05348"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html#aa752ba55e7ee347088673c29751cb57f"> 5348</a></span>&#160;    <a class="code" href="classcl_1_1_pipe.html">Pipe</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_pipe.html">Pipe</a> &amp;pipe)</div><div class="line"><a name="l05349"></a><span class="lineno"> 5349</span>&#160;    {</div><div class="line"><a name="l05350"></a><span class="lineno"> 5350</span>&#160;        <a class="code" href="classcl_1_1_memory.html#aa6cd4c07a111c6baa3195bee2a447dad">Memory::operator=</a>(pipe);</div><div class="line"><a name="l05351"></a><span class="lineno"> 5351</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05352"></a><span class="lineno"> 5352</span>&#160;    }</div><div class="line"><a name="l05353"></a><span class="lineno"> 5353</span>&#160;</div><div class="line"><a name="l05357"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html#a0cb346bc58e89a18474fa84bc2886c58"> 5357</a></span>&#160;    <a class="code" href="classcl_1_1_pipe.html#a0cb346bc58e89a18474fa84bc2886c58">Pipe</a>(<a class="code" href="classcl_1_1_pipe.html">Pipe</a>&amp;&amp; pipe) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1_memory.html">Memory</a>(std::move(pipe)) {}</div><div class="line"><a name="l05358"></a><span class="lineno"> 5358</span>&#160;</div><div class="line"><a name="l05362"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html#a275a318bd2eba48c20a75ae61eec96fc"> 5362</a></span>&#160;    <a class="code" href="classcl_1_1_pipe.html">Pipe</a>&amp; operator = (<a class="code" href="classcl_1_1_pipe.html">Pipe</a> &amp;&amp;pipe)</div><div class="line"><a name="l05363"></a><span class="lineno"> 5363</span>&#160;    {</div><div class="line"><a name="l05364"></a><span class="lineno"> 5364</span>&#160;        <a class="code" href="classcl_1_1_memory.html#aa6cd4c07a111c6baa3195bee2a447dad">Memory::operator=</a>(std::move(pipe));</div><div class="line"><a name="l05365"></a><span class="lineno"> 5365</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05366"></a><span class="lineno"> 5366</span>&#160;    }</div><div class="line"><a name="l05367"></a><span class="lineno"> 5367</span>&#160;</div><div class="line"><a name="l05369"></a><span class="lineno"> 5369</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l05370"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html#a424845c4a7804d2e11046342c4bc93cb"> 5370</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_pipe.html#a424845c4a7804d2e11046342c4bc93cb">getInfo</a>(cl_pipe_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l05371"></a><span class="lineno"> 5371</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05372"></a><span class="lineno"> 5372</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05373"></a><span class="lineno"> 5373</span>&#160;            detail::getInfo(&amp;::clGetPipeInfo, object_, name, param),</div><div class="line"><a name="l05374"></a><span class="lineno"> 5374</span>&#160;            __GET_PIPE_INFO_ERR);</div><div class="line"><a name="l05375"></a><span class="lineno"> 5375</span>&#160;    }</div><div class="line"><a name="l05376"></a><span class="lineno"> 5376</span>&#160;</div><div class="line"><a name="l05378"></a><span class="lineno"> 5378</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l05379"></a><span class="lineno"> 5379</span>&#160;        <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_pipe_info, name&gt;::param_type</a></div><div class="line"><a name="l05380"></a><span class="lineno"><a class="line" href="classcl_1_1_pipe.html#ad929059a1bcc11a92894affcd15642e3"> 5380</a></span>&#160;        <a class="code" href="classcl_1_1_pipe.html#ad929059a1bcc11a92894affcd15642e3">getInfo</a>(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l05381"></a><span class="lineno"> 5381</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05382"></a><span class="lineno"> 5382</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l05383"></a><span class="lineno"> 5383</span>&#160;            detail::cl_pipe_info, name&gt;::param_type param;</div><div class="line"><a name="l05384"></a><span class="lineno"> 5384</span>&#160;        cl_int result = getInfo(name, &amp;param);</div><div class="line"><a name="l05385"></a><span class="lineno"> 5385</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05386"></a><span class="lineno"> 5386</span>&#160;            *err = result;</div><div class="line"><a name="l05387"></a><span class="lineno"> 5387</span>&#160;        }</div><div class="line"><a name="l05388"></a><span class="lineno"> 5388</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l05389"></a><span class="lineno"> 5389</span>&#160;    }</div><div class="line"><a name="l05390"></a><span class="lineno"> 5390</span>&#160;}; <span class="comment">// class Pipe</span></div><div class="line"><a name="l05391"></a><span class="lineno"> 5391</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l05392"></a><span class="lineno"> 5392</span>&#160;</div><div class="line"><a name="l05393"></a><span class="lineno"> 5393</span>&#160;</div><div class="line"><a name="l05402"></a><span class="lineno"><a class="line" href="classcl_1_1_sampler.html"> 5402</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_sampler.html">Sampler</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper</a>&lt;cl_sampler&gt;</div><div class="line"><a name="l05403"></a><span class="lineno"> 5403</span>&#160;{</div><div class="line"><a name="l05404"></a><span class="lineno"> 5404</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l05406"></a><span class="lineno"><a class="line" href="classcl_1_1_sampler.html#a1c8395b386e3b1c09dc43f4134909390"> 5406</a></span>&#160;    <a class="code" href="classcl_1_1_sampler.html#a1c8395b386e3b1c09dc43f4134909390">Sampler</a>() { }</div><div class="line"><a name="l05407"></a><span class="lineno"> 5407</span>&#160;</div><div class="line"><a name="l05412"></a><span class="lineno"><a class="line" href="classcl_1_1_sampler.html#a41d7df0a069717bc570a6ccdab3d3acd"> 5412</a></span>&#160;    <a class="code" href="classcl_1_1_sampler.html#a41d7df0a069717bc570a6ccdab3d3acd">Sampler</a>(</div><div class="line"><a name="l05413"></a><span class="lineno"> 5413</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l05414"></a><span class="lineno"> 5414</span>&#160;        cl_bool normalized_coords,</div><div class="line"><a name="l05415"></a><span class="lineno"> 5415</span>&#160;        cl_addressing_mode addressing_mode,</div><div class="line"><a name="l05416"></a><span class="lineno"> 5416</span>&#160;        cl_filter_mode filter_mode,</div><div class="line"><a name="l05417"></a><span class="lineno"> 5417</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l05418"></a><span class="lineno"> 5418</span>&#160;    {</div><div class="line"><a name="l05419"></a><span class="lineno"> 5419</span>&#160;        cl_int error;</div><div class="line"><a name="l05420"></a><span class="lineno"> 5420</span>&#160;</div><div class="line"><a name="l05421"></a><span class="lineno"> 5421</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l05422"></a><span class="lineno"> 5422</span>&#160;        cl_sampler_properties sampler_properties[] = {</div><div class="line"><a name="l05423"></a><span class="lineno"> 5423</span>&#160;            CL_SAMPLER_NORMALIZED_COORDS, normalized_coords,</div><div class="line"><a name="l05424"></a><span class="lineno"> 5424</span>&#160;            CL_SAMPLER_ADDRESSING_MODE, addressing_mode,</div><div class="line"><a name="l05425"></a><span class="lineno"> 5425</span>&#160;            CL_SAMPLER_FILTER_MODE, filter_mode,</div><div class="line"><a name="l05426"></a><span class="lineno"> 5426</span>&#160;            0 };</div><div class="line"><a name="l05427"></a><span class="lineno"> 5427</span>&#160;        object_ = ::clCreateSamplerWithProperties(</div><div class="line"><a name="l05428"></a><span class="lineno"> 5428</span>&#160;            context(),</div><div class="line"><a name="l05429"></a><span class="lineno"> 5429</span>&#160;            sampler_properties,</div><div class="line"><a name="l05430"></a><span class="lineno"> 5430</span>&#160;            &amp;error);</div><div class="line"><a name="l05431"></a><span class="lineno"> 5431</span>&#160;</div><div class="line"><a name="l05432"></a><span class="lineno"> 5432</span>&#160;        detail::errHandler(error, __CREATE_SAMPLER_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l05433"></a><span class="lineno"> 5433</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05434"></a><span class="lineno"> 5434</span>&#160;            *err = error;</div><div class="line"><a name="l05435"></a><span class="lineno"> 5435</span>&#160;        }</div><div class="line"><a name="l05436"></a><span class="lineno"> 5436</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l05437"></a><span class="lineno"> 5437</span>&#160;        object_ = ::clCreateSampler(</div><div class="line"><a name="l05438"></a><span class="lineno"> 5438</span>&#160;            context(),</div><div class="line"><a name="l05439"></a><span class="lineno"> 5439</span>&#160;            normalized_coords,</div><div class="line"><a name="l05440"></a><span class="lineno"> 5440</span>&#160;            addressing_mode,</div><div class="line"><a name="l05441"></a><span class="lineno"> 5441</span>&#160;            filter_mode,</div><div class="line"><a name="l05442"></a><span class="lineno"> 5442</span>&#160;            &amp;error);</div><div class="line"><a name="l05443"></a><span class="lineno"> 5443</span>&#160;</div><div class="line"><a name="l05444"></a><span class="lineno"> 5444</span>&#160;        detail::errHandler(error, __CREATE_SAMPLER_ERR);</div><div class="line"><a name="l05445"></a><span class="lineno"> 5445</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05446"></a><span class="lineno"> 5446</span>&#160;            *err = error;</div><div class="line"><a name="l05447"></a><span class="lineno"> 5447</span>&#160;        }</div><div class="line"><a name="l05448"></a><span class="lineno"> 5448</span>&#160;<span class="preprocessor">#endif        </span></div><div class="line"><a name="l05449"></a><span class="lineno"> 5449</span>&#160;    }</div><div class="line"><a name="l05450"></a><span class="lineno"> 5450</span>&#160;</div><div class="line"><a name="l05459"></a><span class="lineno"><a class="line" href="classcl_1_1_sampler.html#aa32c71d59ca20e83fc283273d0b102cd"> 5459</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_sampler.html#aa32c71d59ca20e83fc283273d0b102cd">Sampler</a>(<span class="keyword">const</span> cl_sampler&amp; sampler, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l05460"></a><span class="lineno"> 5460</span>&#160;        detail::Wrapper&lt;cl_type&gt;(sampler, retainObject) { }</div><div class="line"><a name="l05461"></a><span class="lineno"> 5461</span>&#160;</div><div class="line"><a name="l05467"></a><span class="lineno"><a class="line" href="classcl_1_1_sampler.html#a011eed498881010b78ffdcdd9fcb4056"> 5467</a></span>&#160;    <a class="code" href="classcl_1_1_sampler.html">Sampler</a>&amp; operator = (<span class="keyword">const</span> cl_sampler&amp; rhs)</div><div class="line"><a name="l05468"></a><span class="lineno"> 5468</span>&#160;    {</div><div class="line"><a name="l05469"></a><span class="lineno"> 5469</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(rhs);</div><div class="line"><a name="l05470"></a><span class="lineno"> 5470</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05471"></a><span class="lineno"> 5471</span>&#160;    }</div><div class="line"><a name="l05472"></a><span class="lineno"> 5472</span>&#160;</div><div class="line"><a name="l05476"></a><span class="lineno"><a class="line" href="classcl_1_1_sampler.html#a684ea0f7bb85233239ba3a266795c1a4"> 5476</a></span>&#160;    <a class="code" href="classcl_1_1_sampler.html#a684ea0f7bb85233239ba3a266795c1a4">Sampler</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_sampler.html">Sampler</a>&amp; sam) : detail::Wrapper&lt;cl_type&gt;(sam) {}</div><div class="line"><a name="l05477"></a><span class="lineno"> 5477</span>&#160;</div><div class="line"><a name="l05481"></a><span class="lineno"><a class="line" href="classcl_1_1_sampler.html#ad26196f0282429667828b5b39bbc97f1"> 5481</a></span>&#160;    <a class="code" href="classcl_1_1_sampler.html">Sampler</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_sampler.html">Sampler</a> &amp;sam)</div><div class="line"><a name="l05482"></a><span class="lineno"> 5482</span>&#160;    {</div><div class="line"><a name="l05483"></a><span class="lineno"> 5483</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(sam);</div><div class="line"><a name="l05484"></a><span class="lineno"> 5484</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05485"></a><span class="lineno"> 5485</span>&#160;    }</div><div class="line"><a name="l05486"></a><span class="lineno"> 5486</span>&#160;</div><div class="line"><a name="l05490"></a><span class="lineno"><a class="line" href="classcl_1_1_sampler.html#a487aa40df9ababf70fe4c19a0b538f6f"> 5490</a></span>&#160;    <a class="code" href="classcl_1_1_sampler.html#a487aa40df9ababf70fe4c19a0b538f6f">Sampler</a>(<a class="code" href="classcl_1_1_sampler.html">Sampler</a>&amp;&amp; sam) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;</a>(std::move(sam)) {}</div><div class="line"><a name="l05491"></a><span class="lineno"> 5491</span>&#160;</div><div class="line"><a name="l05495"></a><span class="lineno"><a class="line" href="classcl_1_1_sampler.html#a8d58fcb1dc466f4b1de2c38c6cb76823"> 5495</a></span>&#160;    <a class="code" href="classcl_1_1_sampler.html">Sampler</a>&amp; operator = (<a class="code" href="classcl_1_1_sampler.html">Sampler</a> &amp;&amp;sam)</div><div class="line"><a name="l05496"></a><span class="lineno"> 5496</span>&#160;    {</div><div class="line"><a name="l05497"></a><span class="lineno"> 5497</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(std::move(sam));</div><div class="line"><a name="l05498"></a><span class="lineno"> 5498</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05499"></a><span class="lineno"> 5499</span>&#160;    }</div><div class="line"><a name="l05500"></a><span class="lineno"> 5500</span>&#160;</div><div class="line"><a name="l05502"></a><span class="lineno"> 5502</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l05503"></a><span class="lineno"><a class="line" href="classcl_1_1_sampler.html#a692268678bf12b7b754009f9ba291fbc"> 5503</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_sampler.html#a692268678bf12b7b754009f9ba291fbc">getInfo</a>(cl_sampler_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l05504"></a><span class="lineno"> 5504</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05505"></a><span class="lineno"> 5505</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05506"></a><span class="lineno"> 5506</span>&#160;            detail::getInfo(&amp;::clGetSamplerInfo, object_, name, param),</div><div class="line"><a name="l05507"></a><span class="lineno"> 5507</span>&#160;            __GET_SAMPLER_INFO_ERR);</div><div class="line"><a name="l05508"></a><span class="lineno"> 5508</span>&#160;    }</div><div class="line"><a name="l05509"></a><span class="lineno"> 5509</span>&#160;</div><div class="line"><a name="l05511"></a><span class="lineno"> 5511</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l05512"></a><span class="lineno"> 5512</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_sampler_info, name&gt;::param_type</a></div><div class="line"><a name="l05513"></a><span class="lineno"><a class="line" href="classcl_1_1_sampler.html#afc12ea7675deef235c907034f72a0476"> 5513</a></span>&#160;    <a class="code" href="classcl_1_1_sampler.html#afc12ea7675deef235c907034f72a0476">getInfo</a>(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l05514"></a><span class="lineno"> 5514</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05515"></a><span class="lineno"> 5515</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l05516"></a><span class="lineno"> 5516</span>&#160;            detail::cl_sampler_info, name&gt;::param_type param;</div><div class="line"><a name="l05517"></a><span class="lineno"> 5517</span>&#160;        cl_int result = getInfo(name, &amp;param);</div><div class="line"><a name="l05518"></a><span class="lineno"> 5518</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05519"></a><span class="lineno"> 5519</span>&#160;            *err = result;</div><div class="line"><a name="l05520"></a><span class="lineno"> 5520</span>&#160;        }</div><div class="line"><a name="l05521"></a><span class="lineno"> 5521</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l05522"></a><span class="lineno"> 5522</span>&#160;    }</div><div class="line"><a name="l05523"></a><span class="lineno"> 5523</span>&#160;};</div><div class="line"><a name="l05524"></a><span class="lineno"> 5524</span>&#160;</div><div class="line"><a name="l05525"></a><span class="lineno"> 5525</span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_program.html">Program</a>;</div><div class="line"><a name="l05526"></a><span class="lineno"> 5526</span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a>;</div><div class="line"><a name="l05527"></a><span class="lineno"> 5527</span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a>;</div><div class="line"><a name="l05528"></a><span class="lineno"> 5528</span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_kernel.html">Kernel</a>;</div><div class="line"><a name="l05529"></a><span class="lineno"> 5529</span>&#160;</div><div class="line"><a name="l05531"></a><span class="lineno"><a class="line" href="classcl_1_1_n_d_range.html"> 5531</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_n_d_range.html">NDRange</a></div><div class="line"><a name="l05532"></a><span class="lineno"> 5532</span>&#160;{</div><div class="line"><a name="l05533"></a><span class="lineno"> 5533</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l05534"></a><span class="lineno"> 5534</span>&#160;    size_type sizes_[3];</div><div class="line"><a name="l05535"></a><span class="lineno"> 5535</span>&#160;    cl_uint dimensions_;</div><div class="line"><a name="l05536"></a><span class="lineno"> 5536</span>&#160;</div><div class="line"><a name="l05537"></a><span class="lineno"> 5537</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l05539"></a><span class="lineno"><a class="line" href="classcl_1_1_n_d_range.html#ad7121613ed829d6a21f4866e96b84217"> 5539</a></span>&#160;    <a class="code" href="classcl_1_1_n_d_range.html#ad7121613ed829d6a21f4866e96b84217">NDRange</a>()</div><div class="line"><a name="l05540"></a><span class="lineno"> 5540</span>&#160;        : dimensions_(0)</div><div class="line"><a name="l05541"></a><span class="lineno"> 5541</span>&#160;    {</div><div class="line"><a name="l05542"></a><span class="lineno"> 5542</span>&#160;        sizes_[0] = 0;</div><div class="line"><a name="l05543"></a><span class="lineno"> 5543</span>&#160;        sizes_[1] = 0;</div><div class="line"><a name="l05544"></a><span class="lineno"> 5544</span>&#160;        sizes_[2] = 0;</div><div class="line"><a name="l05545"></a><span class="lineno"> 5545</span>&#160;    }</div><div class="line"><a name="l05546"></a><span class="lineno"> 5546</span>&#160;</div><div class="line"><a name="l05548"></a><span class="lineno"><a class="line" href="classcl_1_1_n_d_range.html#aecea642547cae272e0b108a3049afeeb"> 5548</a></span>&#160;    <a class="code" href="classcl_1_1_n_d_range.html#aecea642547cae272e0b108a3049afeeb">NDRange</a>(size_type size0)</div><div class="line"><a name="l05549"></a><span class="lineno"> 5549</span>&#160;        : dimensions_(1)</div><div class="line"><a name="l05550"></a><span class="lineno"> 5550</span>&#160;    {</div><div class="line"><a name="l05551"></a><span class="lineno"> 5551</span>&#160;        sizes_[0] = size0;</div><div class="line"><a name="l05552"></a><span class="lineno"> 5552</span>&#160;        sizes_[1] = 1;</div><div class="line"><a name="l05553"></a><span class="lineno"> 5553</span>&#160;        sizes_[2] = 1;</div><div class="line"><a name="l05554"></a><span class="lineno"> 5554</span>&#160;    }</div><div class="line"><a name="l05555"></a><span class="lineno"> 5555</span>&#160;</div><div class="line"><a name="l05557"></a><span class="lineno"><a class="line" href="classcl_1_1_n_d_range.html#a6562c4ffea059267582aa22bc96d7435"> 5557</a></span>&#160;    <a class="code" href="classcl_1_1_n_d_range.html#a6562c4ffea059267582aa22bc96d7435">NDRange</a>(size_type size0, size_type size1)</div><div class="line"><a name="l05558"></a><span class="lineno"> 5558</span>&#160;        : dimensions_(2)</div><div class="line"><a name="l05559"></a><span class="lineno"> 5559</span>&#160;    {</div><div class="line"><a name="l05560"></a><span class="lineno"> 5560</span>&#160;        sizes_[0] = size0;</div><div class="line"><a name="l05561"></a><span class="lineno"> 5561</span>&#160;        sizes_[1] = size1;</div><div class="line"><a name="l05562"></a><span class="lineno"> 5562</span>&#160;        sizes_[2] = 1;</div><div class="line"><a name="l05563"></a><span class="lineno"> 5563</span>&#160;    }</div><div class="line"><a name="l05564"></a><span class="lineno"> 5564</span>&#160;</div><div class="line"><a name="l05566"></a><span class="lineno"><a class="line" href="classcl_1_1_n_d_range.html#a8fd331a55e1c4871e8ffa3a35b95e538"> 5566</a></span>&#160;    <a class="code" href="classcl_1_1_n_d_range.html#a8fd331a55e1c4871e8ffa3a35b95e538">NDRange</a>(size_type size0, size_type size1, size_type size2)</div><div class="line"><a name="l05567"></a><span class="lineno"> 5567</span>&#160;        : dimensions_(3)</div><div class="line"><a name="l05568"></a><span class="lineno"> 5568</span>&#160;    {</div><div class="line"><a name="l05569"></a><span class="lineno"> 5569</span>&#160;        sizes_[0] = size0;</div><div class="line"><a name="l05570"></a><span class="lineno"> 5570</span>&#160;        sizes_[1] = size1;</div><div class="line"><a name="l05571"></a><span class="lineno"> 5571</span>&#160;        sizes_[2] = size2;</div><div class="line"><a name="l05572"></a><span class="lineno"> 5572</span>&#160;    }</div><div class="line"><a name="l05573"></a><span class="lineno"> 5573</span>&#160;</div><div class="line"><a name="l05578"></a><span class="lineno"><a class="line" href="classcl_1_1_n_d_range.html#a5e85a035063589e50076bc112782a7ec"> 5578</a></span>&#160;    <span class="keyword">operator</span> <span class="keyword">const</span> size_type*() <span class="keyword">const</span> { </div><div class="line"><a name="l05579"></a><span class="lineno"> 5579</span>&#160;        <span class="keywordflow">return</span> sizes_; </div><div class="line"><a name="l05580"></a><span class="lineno"> 5580</span>&#160;    }</div><div class="line"><a name="l05581"></a><span class="lineno"> 5581</span>&#160;</div><div class="line"><a name="l05583"></a><span class="lineno"><a class="line" href="classcl_1_1_n_d_range.html#a5684b0c2c648557ef31e6b212e8c4939"> 5583</a></span>&#160;    size_type <a class="code" href="classcl_1_1_n_d_range.html#a5684b0c2c648557ef31e6b212e8c4939">dimensions</a>()<span class="keyword"> const </span></div><div class="line"><a name="l05584"></a><span class="lineno"> 5584</span>&#160;<span class="keyword">    </span>{ </div><div class="line"><a name="l05585"></a><span class="lineno"> 5585</span>&#160;        <span class="keywordflow">return</span> dimensions_; </div><div class="line"><a name="l05586"></a><span class="lineno"> 5586</span>&#160;    }</div><div class="line"><a name="l05587"></a><span class="lineno"> 5587</span>&#160;</div><div class="line"><a name="l05589"></a><span class="lineno"> 5589</span>&#160;    <span class="comment">// runtime number of dimensions</span></div><div class="line"><a name="l05590"></a><span class="lineno"><a class="line" href="classcl_1_1_n_d_range.html#ad197ecf968b6dce338137909827cb66f"> 5590</a></span>&#160;    size_type <a class="code" href="classcl_1_1_n_d_range.html#ad197ecf968b6dce338137909827cb66f">size</a>()<span class="keyword"> const</span></div><div class="line"><a name="l05591"></a><span class="lineno"> 5591</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05592"></a><span class="lineno"> 5592</span>&#160;        <span class="keywordflow">return</span> dimensions_*<span class="keyword">sizeof</span>(size_type);</div><div class="line"><a name="l05593"></a><span class="lineno"> 5593</span>&#160;    }</div><div class="line"><a name="l05594"></a><span class="lineno"> 5594</span>&#160;</div><div class="line"><a name="l05595"></a><span class="lineno"> 5595</span>&#160;    size_type* <span class="keyword">get</span>()</div><div class="line"><a name="l05596"></a><span class="lineno"> 5596</span>&#160;    {</div><div class="line"><a name="l05597"></a><span class="lineno"> 5597</span>&#160;        <span class="keywordflow">return</span> sizes_;</div><div class="line"><a name="l05598"></a><span class="lineno"> 5598</span>&#160;    }</div><div class="line"><a name="l05599"></a><span class="lineno"> 5599</span>&#160;    </div><div class="line"><a name="l05600"></a><span class="lineno"> 5600</span>&#160;    <span class="keyword">const</span> size_type* <span class="keyword">get</span>() <span class="keyword">const</span></div><div class="line"><a name="l05601"></a><span class="lineno"> 5601</span>&#160;    {</div><div class="line"><a name="l05602"></a><span class="lineno"> 5602</span>&#160;        <span class="keywordflow">return</span> sizes_;</div><div class="line"><a name="l05603"></a><span class="lineno"> 5603</span>&#160;    }</div><div class="line"><a name="l05604"></a><span class="lineno"> 5604</span>&#160;};</div><div class="line"><a name="l05605"></a><span class="lineno"> 5605</span>&#160;</div><div class="line"><a name="l05607"></a><span class="lineno"> 5607</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> NullRange;</div><div class="line"><a name="l05608"></a><span class="lineno"> 5608</span>&#160;</div><div class="line"><a name="l05610"></a><span class="lineno"><a class="line" href="structcl_1_1_local_space_arg.html"> 5610</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1_local_space_arg.html">LocalSpaceArg</a></div><div class="line"><a name="l05611"></a><span class="lineno"> 5611</span>&#160;{</div><div class="line"><a name="l05612"></a><span class="lineno"> 5612</span>&#160;    size_type size_;</div><div class="line"><a name="l05613"></a><span class="lineno"> 5613</span>&#160;};</div><div class="line"><a name="l05614"></a><span class="lineno"> 5614</span>&#160;</div><div class="line"><a name="l05615"></a><span class="lineno"> 5615</span>&#160;<span class="keyword">namespace </span>detail {</div><div class="line"><a name="l05616"></a><span class="lineno"> 5616</span>&#160;</div><div class="line"><a name="l05617"></a><span class="lineno"> 5617</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> Enable = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l05618"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_kernel_argument_handler.html"> 5618</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_kernel_argument_handler.html">KernelArgumentHandler</a>;</div><div class="line"><a name="l05619"></a><span class="lineno"> 5619</span>&#160;</div><div class="line"><a name="l05620"></a><span class="lineno"> 5620</span>&#160;<span class="comment">// Enable for objects that are not subclasses of memory</span></div><div class="line"><a name="l05621"></a><span class="lineno"> 5621</span>&#160;<span class="comment">// Pointers, constants etc</span></div><div class="line"><a name="l05622"></a><span class="lineno"> 5622</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l05623"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_kernel_argument_handler_3_01_t_00_01typename_01std_1_1enable__if_3_9std_10affa824618af864313998f2e6bcf08f.html"> 5623</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_kernel_argument_handler.html">KernelArgumentHandler</a>&lt;T, typename std::enable_if&lt;!std::is_base_of&lt;cl::Memory, T&gt;::value&gt;::type&gt;</div><div class="line"><a name="l05624"></a><span class="lineno"> 5624</span>&#160;{</div><div class="line"><a name="l05625"></a><span class="lineno"> 5625</span>&#160;    <span class="keyword">static</span> size_type size(<span class="keyword">const</span> T&amp;) { <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(T); }</div><div class="line"><a name="l05626"></a><span class="lineno"> 5626</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> T* ptr(<span class="keyword">const</span> T&amp; value) { <span class="keywordflow">return</span> &amp;value; }</div><div class="line"><a name="l05627"></a><span class="lineno"> 5627</span>&#160;};</div><div class="line"><a name="l05628"></a><span class="lineno"> 5628</span>&#160;</div><div class="line"><a name="l05629"></a><span class="lineno"> 5629</span>&#160;<span class="comment">// Enable for subclasses of memory where we want to get a reference to the cl_mem out</span></div><div class="line"><a name="l05630"></a><span class="lineno"> 5630</span>&#160;<span class="comment">// and pass that in for safety</span></div><div class="line"><a name="l05631"></a><span class="lineno"> 5631</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l05632"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_kernel_argument_handler_3_01_t_00_01typename_01std_1_1enable__if_3_01std_cb5bfaca8096193f715a7bbe8a3fa84f.html"> 5632</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_kernel_argument_handler.html">KernelArgumentHandler</a>&lt;T, typename std::enable_if&lt;std::is_base_of&lt;cl::Memory, T&gt;::value&gt;::type&gt;</div><div class="line"><a name="l05633"></a><span class="lineno"> 5633</span>&#160;{</div><div class="line"><a name="l05634"></a><span class="lineno"> 5634</span>&#160;    <span class="keyword">static</span> size_type size(<span class="keyword">const</span> T&amp;) { <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(cl_mem); }</div><div class="line"><a name="l05635"></a><span class="lineno"> 5635</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> cl_mem* ptr(<span class="keyword">const</span> T&amp; value) { <span class="keywordflow">return</span> &amp;(value()); }</div><div class="line"><a name="l05636"></a><span class="lineno"> 5636</span>&#160;};</div><div class="line"><a name="l05637"></a><span class="lineno"> 5637</span>&#160;</div><div class="line"><a name="l05638"></a><span class="lineno"> 5638</span>&#160;<span class="comment">// Specialization for DeviceCommandQueue defined later</span></div><div class="line"><a name="l05639"></a><span class="lineno"> 5639</span>&#160;</div><div class="line"><a name="l05640"></a><span class="lineno"> 5640</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l05641"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_kernel_argument_handler_3_01_local_space_arg_00_01void_01_4.html"> 5641</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_kernel_argument_handler.html">KernelArgumentHandler</a>&lt;<a class="code" href="structcl_1_1_local_space_arg.html">LocalSpaceArg</a>, void&gt;</div><div class="line"><a name="l05642"></a><span class="lineno"> 5642</span>&#160;{</div><div class="line"><a name="l05643"></a><span class="lineno"> 5643</span>&#160;    <span class="keyword">static</span> size_type size(<span class="keyword">const</span> <a class="code" href="structcl_1_1_local_space_arg.html">LocalSpaceArg</a>&amp; value) { <span class="keywordflow">return</span> value.size_; }</div><div class="line"><a name="l05644"></a><span class="lineno"> 5644</span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">void</span>* ptr(<span class="keyword">const</span> <a class="code" href="structcl_1_1_local_space_arg.html">LocalSpaceArg</a>&amp;) { <span class="keywordflow">return</span> NULL; }</div><div class="line"><a name="l05645"></a><span class="lineno"> 5645</span>&#160;};</div><div class="line"><a name="l05646"></a><span class="lineno"> 5646</span>&#160;</div><div class="line"><a name="l05647"></a><span class="lineno"> 5647</span>&#160;} </div><div class="line"><a name="l05649"></a><span class="lineno"> 5649</span>&#160;</div><div class="line"><a name="l05653"></a><span class="lineno"> 5653</span>&#160;<span class="keyword">inline</span> <a class="code" href="structcl_1_1_local_space_arg.html">LocalSpaceArg</a></div><div class="line"><a name="l05654"></a><span class="lineno"><a class="line" href="namespacecl.html#a2f9d06d8196d7a2f4cf196d5bb7e5dd0"> 5654</a></span>&#160;<a class="code" href="namespacecl.html#a2f9d06d8196d7a2f4cf196d5bb7e5dd0">Local</a>(size_type size)</div><div class="line"><a name="l05655"></a><span class="lineno"> 5655</span>&#160;{</div><div class="line"><a name="l05656"></a><span class="lineno"> 5656</span>&#160;    <a class="code" href="structcl_1_1_local_space_arg.html">LocalSpaceArg</a> ret = { size };</div><div class="line"><a name="l05657"></a><span class="lineno"> 5657</span>&#160;    <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l05658"></a><span class="lineno"> 5658</span>&#160;}</div><div class="line"><a name="l05659"></a><span class="lineno"> 5659</span>&#160;</div><div class="line"><a name="l05668"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html"> 5668</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_kernel.html">Kernel</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper</a>&lt;cl_kernel&gt;</div><div class="line"><a name="l05669"></a><span class="lineno"> 5669</span>&#160;{</div><div class="line"><a name="l05670"></a><span class="lineno"> 5670</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l05671"></a><span class="lineno"> 5671</span>&#160;    <span class="keyword">inline</span> <a class="code" href="classcl_1_1_kernel.html">Kernel</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_program.html">Program</a>&amp; program, <span class="keyword">const</span> <span class="keywordtype">char</span>* name, cl_int* err = NULL);</div><div class="line"><a name="l05672"></a><span class="lineno"> 5672</span>&#160;</div><div class="line"><a name="l05674"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#a69b2fc97f80d90a23927a74395d09ec9"> 5674</a></span>&#160;    <a class="code" href="classcl_1_1_kernel.html#a69b2fc97f80d90a23927a74395d09ec9">Kernel</a>() { }</div><div class="line"><a name="l05675"></a><span class="lineno"> 5675</span>&#160;</div><div class="line"><a name="l05684"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#a0c71f37cb53fbe492847fbb2dff2bfed"> 5684</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_kernel.html#a0c71f37cb53fbe492847fbb2dff2bfed">Kernel</a>(<span class="keyword">const</span> cl_kernel&amp; kernel, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l05685"></a><span class="lineno"> 5685</span>&#160;        detail::Wrapper&lt;cl_type&gt;(kernel, retainObject) { }</div><div class="line"><a name="l05686"></a><span class="lineno"> 5686</span>&#160;</div><div class="line"><a name="l05692"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#a242f26c280c867f531cc30c953e6d4b9"> 5692</a></span>&#160;    <a class="code" href="classcl_1_1_kernel.html">Kernel</a>&amp; operator = (<span class="keyword">const</span> cl_kernel&amp; rhs)</div><div class="line"><a name="l05693"></a><span class="lineno"> 5693</span>&#160;    {</div><div class="line"><a name="l05694"></a><span class="lineno"> 5694</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(rhs);</div><div class="line"><a name="l05695"></a><span class="lineno"> 5695</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05696"></a><span class="lineno"> 5696</span>&#160;    }</div><div class="line"><a name="l05697"></a><span class="lineno"> 5697</span>&#160;</div><div class="line"><a name="l05701"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#a93b516f37993297101dd9d30a4572b23"> 5701</a></span>&#160;    <a class="code" href="classcl_1_1_kernel.html#a93b516f37993297101dd9d30a4572b23">Kernel</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_kernel.html">Kernel</a>&amp; kernel) : detail::Wrapper&lt;cl_type&gt;(kernel) {}</div><div class="line"><a name="l05702"></a><span class="lineno"> 5702</span>&#160;</div><div class="line"><a name="l05706"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#a73577d4ec1662b6939f8adbfff1f2d81"> 5706</a></span>&#160;    <a class="code" href="classcl_1_1_kernel.html">Kernel</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_kernel.html">Kernel</a> &amp;kernel)</div><div class="line"><a name="l05707"></a><span class="lineno"> 5707</span>&#160;    {</div><div class="line"><a name="l05708"></a><span class="lineno"> 5708</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(kernel);</div><div class="line"><a name="l05709"></a><span class="lineno"> 5709</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05710"></a><span class="lineno"> 5710</span>&#160;    }</div><div class="line"><a name="l05711"></a><span class="lineno"> 5711</span>&#160;</div><div class="line"><a name="l05715"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#a0869347f24520f2d59222f74297c5fe5"> 5715</a></span>&#160;    <a class="code" href="classcl_1_1_kernel.html#a0869347f24520f2d59222f74297c5fe5">Kernel</a>(<a class="code" href="classcl_1_1_kernel.html">Kernel</a>&amp;&amp; kernel) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;</a>(std::move(kernel)) {}</div><div class="line"><a name="l05716"></a><span class="lineno"> 5716</span>&#160;</div><div class="line"><a name="l05720"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#a8e123d85cd5185946741057048cba828"> 5720</a></span>&#160;    <a class="code" href="classcl_1_1_kernel.html">Kernel</a>&amp; operator = (<a class="code" href="classcl_1_1_kernel.html">Kernel</a> &amp;&amp;kernel)</div><div class="line"><a name="l05721"></a><span class="lineno"> 5721</span>&#160;    {</div><div class="line"><a name="l05722"></a><span class="lineno"> 5722</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(std::move(kernel));</div><div class="line"><a name="l05723"></a><span class="lineno"> 5723</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l05724"></a><span class="lineno"> 5724</span>&#160;    }</div><div class="line"><a name="l05725"></a><span class="lineno"> 5725</span>&#160;</div><div class="line"><a name="l05726"></a><span class="lineno"> 5726</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l05727"></a><span class="lineno"> 5727</span>&#160;    cl_int getInfo(cl_kernel_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l05728"></a><span class="lineno"> 5728</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05729"></a><span class="lineno"> 5729</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05730"></a><span class="lineno"> 5730</span>&#160;            detail::getInfo(&amp;::clGetKernelInfo, object_, name, param),</div><div class="line"><a name="l05731"></a><span class="lineno"> 5731</span>&#160;            __GET_KERNEL_INFO_ERR);</div><div class="line"><a name="l05732"></a><span class="lineno"> 5732</span>&#160;    }</div><div class="line"><a name="l05733"></a><span class="lineno"> 5733</span>&#160;</div><div class="line"><a name="l05734"></a><span class="lineno"> 5734</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l05735"></a><span class="lineno"> 5735</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_kernel_info, name&gt;::param_type</a></div><div class="line"><a name="l05736"></a><span class="lineno"> 5736</span>&#160;    getInfo(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l05737"></a><span class="lineno"> 5737</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05738"></a><span class="lineno"> 5738</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l05739"></a><span class="lineno"> 5739</span>&#160;            detail::cl_kernel_info, name&gt;::param_type param;</div><div class="line"><a name="l05740"></a><span class="lineno"> 5740</span>&#160;        cl_int result = getInfo(name, &amp;param);</div><div class="line"><a name="l05741"></a><span class="lineno"> 5741</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05742"></a><span class="lineno"> 5742</span>&#160;            *err = result;</div><div class="line"><a name="l05743"></a><span class="lineno"> 5743</span>&#160;        }</div><div class="line"><a name="l05744"></a><span class="lineno"> 5744</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l05745"></a><span class="lineno"> 5745</span>&#160;    }</div><div class="line"><a name="l05746"></a><span class="lineno"> 5746</span>&#160;</div><div class="line"><a name="l05747"></a><span class="lineno"> 5747</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l05748"></a><span class="lineno"> 5748</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l05749"></a><span class="lineno"> 5749</span>&#160;    cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l05750"></a><span class="lineno"> 5750</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05751"></a><span class="lineno"> 5751</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05752"></a><span class="lineno"> 5752</span>&#160;            detail::getInfo(&amp;::clGetKernelArgInfo, object_, argIndex, name, param),</div><div class="line"><a name="l05753"></a><span class="lineno"> 5753</span>&#160;            __GET_KERNEL_ARG_INFO_ERR);</div><div class="line"><a name="l05754"></a><span class="lineno"> 5754</span>&#160;    }</div><div class="line"><a name="l05755"></a><span class="lineno"> 5755</span>&#160;</div><div class="line"><a name="l05756"></a><span class="lineno"> 5756</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l05757"></a><span class="lineno"> 5757</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_kernel_arg_info, name&gt;::param_type</a></div><div class="line"><a name="l05758"></a><span class="lineno"> 5758</span>&#160;    getArgInfo(cl_uint argIndex, cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l05759"></a><span class="lineno"> 5759</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05760"></a><span class="lineno"> 5760</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l05761"></a><span class="lineno"> 5761</span>&#160;            detail::cl_kernel_arg_info, name&gt;::param_type param;</div><div class="line"><a name="l05762"></a><span class="lineno"> 5762</span>&#160;        cl_int result = getArgInfo(argIndex, name, &amp;param);</div><div class="line"><a name="l05763"></a><span class="lineno"> 5763</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05764"></a><span class="lineno"> 5764</span>&#160;            *err = result;</div><div class="line"><a name="l05765"></a><span class="lineno"> 5765</span>&#160;        }</div><div class="line"><a name="l05766"></a><span class="lineno"> 5766</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l05767"></a><span class="lineno"> 5767</span>&#160;    }</div><div class="line"><a name="l05768"></a><span class="lineno"> 5768</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l05769"></a><span class="lineno"> 5769</span>&#160;</div><div class="line"><a name="l05770"></a><span class="lineno"> 5770</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l05771"></a><span class="lineno"> 5771</span>&#160;    cl_int getWorkGroupInfo(</div><div class="line"><a name="l05772"></a><span class="lineno"> 5772</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a>&amp; device, cl_kernel_work_group_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l05773"></a><span class="lineno"> 5773</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05774"></a><span class="lineno"> 5774</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05775"></a><span class="lineno"> 5775</span>&#160;            detail::getInfo(</div><div class="line"><a name="l05776"></a><span class="lineno"> 5776</span>&#160;                &amp;::clGetKernelWorkGroupInfo, object_, device(), name, param),</div><div class="line"><a name="l05777"></a><span class="lineno"> 5777</span>&#160;                __GET_KERNEL_WORK_GROUP_INFO_ERR);</div><div class="line"><a name="l05778"></a><span class="lineno"> 5778</span>&#160;    }</div><div class="line"><a name="l05779"></a><span class="lineno"> 5779</span>&#160;</div><div class="line"><a name="l05780"></a><span class="lineno"> 5780</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l05781"></a><span class="lineno"> 5781</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_kernel_work_group_info, name&gt;::param_type</a></div><div class="line"><a name="l05782"></a><span class="lineno"> 5782</span>&#160;        getWorkGroupInfo(<span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a>&amp; device, cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l05783"></a><span class="lineno"> 5783</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05784"></a><span class="lineno"> 5784</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l05785"></a><span class="lineno"> 5785</span>&#160;        detail::cl_kernel_work_group_info, name&gt;::param_type param;</div><div class="line"><a name="l05786"></a><span class="lineno"> 5786</span>&#160;        cl_int result = getWorkGroupInfo(device, name, &amp;param);</div><div class="line"><a name="l05787"></a><span class="lineno"> 5787</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05788"></a><span class="lineno"> 5788</span>&#160;            *err = result;</div><div class="line"><a name="l05789"></a><span class="lineno"> 5789</span>&#160;        }</div><div class="line"><a name="l05790"></a><span class="lineno"> 5790</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l05791"></a><span class="lineno"> 5791</span>&#160;    }</div><div class="line"><a name="l05792"></a><span class="lineno"> 5792</span>&#160;    </div><div class="line"><a name="l05793"></a><span class="lineno"> 5793</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l05794"></a><span class="lineno"> 5794</span>&#160;<span class="preprocessor">#if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR)</span></div><div class="line"><a name="l05795"></a><span class="lineno"> 5795</span>&#160;    cl_int getSubGroupInfo(<span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">cl::Device</a> &amp;dev, cl_kernel_sub_group_info name, <span class="keyword">const</span> <a class="code" href="classcl_1_1_n_d_range.html">cl::NDRange</a> &amp;range, size_type* param)<span class="keyword"> const</span></div><div class="line"><a name="l05796"></a><span class="lineno"> 5796</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05797"></a><span class="lineno"> 5797</span>&#160;        <span class="keyword">typedef</span> clGetKernelSubGroupInfoKHR_fn PFN_clGetKernelSubGroupInfoKHR;</div><div class="line"><a name="l05798"></a><span class="lineno"> 5798</span>&#160;        <span class="keyword">static</span> PFN_clGetKernelSubGroupInfoKHR pfn_clGetKernelSubGroupInfoKHR = NULL;</div><div class="line"><a name="l05799"></a><span class="lineno"> 5799</span>&#160;        CL_HPP_INIT_CL_EXT_FCN_PTR_(clGetKernelSubGroupInfoKHR);</div><div class="line"><a name="l05800"></a><span class="lineno"> 5800</span>&#160;</div><div class="line"><a name="l05801"></a><span class="lineno"> 5801</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05802"></a><span class="lineno"> 5802</span>&#160;            pfn_clGetKernelSubGroupInfoKHR(object_, dev(), name, range.<a class="code" href="classcl_1_1_n_d_range.html#ad197ecf968b6dce338137909827cb66f">size</a>(), range.get(), <span class="keyword">sizeof</span>(size_type), param, <span class="keyword">nullptr</span>),</div><div class="line"><a name="l05803"></a><span class="lineno"> 5803</span>&#160;            __GET_KERNEL_ARG_INFO_ERR);</div><div class="line"><a name="l05804"></a><span class="lineno"> 5804</span>&#160;    }</div><div class="line"><a name="l05805"></a><span class="lineno"> 5805</span>&#160;</div><div class="line"><a name="l05806"></a><span class="lineno"> 5806</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt;</div><div class="line"><a name="l05807"></a><span class="lineno"> 5807</span>&#160;        size_type getSubGroupInfo(<span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">cl::Device</a> &amp;dev, <span class="keyword">const</span> <a class="code" href="classcl_1_1_n_d_range.html">cl::NDRange</a> &amp;range, cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l05808"></a><span class="lineno"> 5808</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l05809"></a><span class="lineno"> 5809</span>&#160;        size_type param;</div><div class="line"><a name="l05810"></a><span class="lineno"> 5810</span>&#160;        cl_int result = getSubGroupInfo(dev, name, range, &amp;param);</div><div class="line"><a name="l05811"></a><span class="lineno"> 5811</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l05812"></a><span class="lineno"> 5812</span>&#160;            *err = result;</div><div class="line"><a name="l05813"></a><span class="lineno"> 5813</span>&#160;        }</div><div class="line"><a name="l05814"></a><span class="lineno"> 5814</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l05815"></a><span class="lineno"> 5815</span>&#160;    }</div><div class="line"><a name="l05816"></a><span class="lineno"> 5816</span>&#160;<span class="preprocessor">#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR)</span></div><div class="line"><a name="l05817"></a><span class="lineno"> 5817</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l05818"></a><span class="lineno"> 5818</span>&#160;</div><div class="line"><a name="l05819"></a><span class="lineno"> 5819</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l05820"></a><span class="lineno"> 5820</span>&#160;</div><div class="line"><a name="l05822"></a><span class="lineno"> 5822</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> D&gt;</div><div class="line"><a name="l05823"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#a3ec081fb9656b0780d808563256dfeff"> 5823</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_kernel.html#a3ec081fb9656b0780d808563256dfeff">setArg</a>(cl_uint index, <span class="keyword">const</span> cl::pointer&lt;T, D&gt; &amp;argPtr)</div><div class="line"><a name="l05824"></a><span class="lineno"> 5824</span>&#160;    {</div><div class="line"><a name="l05825"></a><span class="lineno"> 5825</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05826"></a><span class="lineno"> 5826</span>&#160;            ::clSetKernelArgSVMPointer(object_, index, argPtr.get()),</div><div class="line"><a name="l05827"></a><span class="lineno"> 5827</span>&#160;            __SET_KERNEL_ARGS_ERR);</div><div class="line"><a name="l05828"></a><span class="lineno"> 5828</span>&#160;    }</div><div class="line"><a name="l05829"></a><span class="lineno"> 5829</span>&#160;</div><div class="line"><a name="l05832"></a><span class="lineno"> 5832</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> Alloc&gt;</div><div class="line"><a name="l05833"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#a9516e70e10909526dfb01f6cfe8b61bd"> 5833</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_kernel.html#a9516e70e10909526dfb01f6cfe8b61bd">setArg</a>(cl_uint index, <span class="keyword">const</span> cl::vector&lt;T, Alloc&gt; &amp;argPtr)</div><div class="line"><a name="l05834"></a><span class="lineno"> 5834</span>&#160;    {</div><div class="line"><a name="l05835"></a><span class="lineno"> 5835</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05836"></a><span class="lineno"> 5836</span>&#160;            ::clSetKernelArgSVMPointer(object_, index, argPtr.data()),</div><div class="line"><a name="l05837"></a><span class="lineno"> 5837</span>&#160;            __SET_KERNEL_ARGS_ERR);</div><div class="line"><a name="l05838"></a><span class="lineno"> 5838</span>&#160;    }</div><div class="line"><a name="l05839"></a><span class="lineno"> 5839</span>&#160;</div><div class="line"><a name="l05842"></a><span class="lineno"> 5842</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l05843"></a><span class="lineno"> 5843</span>&#160;    <span class="keyword">typename</span> std::enable_if&lt;std::is_pointer&lt;T&gt;::value, cl_int&gt;::type</div><div class="line"><a name="l05844"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#a69cdd780a6b77e3b15c7436c5ab665a3"> 5844</a></span>&#160;        <a class="code" href="classcl_1_1_kernel.html#a69cdd780a6b77e3b15c7436c5ab665a3">setArg</a>(cl_uint index, <span class="keyword">const</span> T argPtr)</div><div class="line"><a name="l05845"></a><span class="lineno"> 5845</span>&#160;    {</div><div class="line"><a name="l05846"></a><span class="lineno"> 5846</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05847"></a><span class="lineno"> 5847</span>&#160;            ::clSetKernelArgSVMPointer(object_, index, argPtr),</div><div class="line"><a name="l05848"></a><span class="lineno"> 5848</span>&#160;            __SET_KERNEL_ARGS_ERR);</div><div class="line"><a name="l05849"></a><span class="lineno"> 5849</span>&#160;    }</div><div class="line"><a name="l05850"></a><span class="lineno"> 5850</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l05851"></a><span class="lineno"> 5851</span>&#160;</div><div class="line"><a name="l05854"></a><span class="lineno"> 5854</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l05855"></a><span class="lineno"> 5855</span>&#160;    <span class="keyword">typename</span> std::enable_if&lt;!std::is_pointer&lt;T&gt;::value, cl_int&gt;::type</div><div class="line"><a name="l05856"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#aa694b5dfe7413e3a38d1185208ec1ec7"> 5856</a></span>&#160;        <a class="code" href="classcl_1_1_kernel.html#aa694b5dfe7413e3a38d1185208ec1ec7">setArg</a>(cl_uint index, <span class="keyword">const</span> T &amp;value)</div><div class="line"><a name="l05857"></a><span class="lineno"> 5857</span>&#160;    {</div><div class="line"><a name="l05858"></a><span class="lineno"> 5858</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05859"></a><span class="lineno"> 5859</span>&#160;            ::clSetKernelArg(</div><div class="line"><a name="l05860"></a><span class="lineno"> 5860</span>&#160;                object_,</div><div class="line"><a name="l05861"></a><span class="lineno"> 5861</span>&#160;                index,</div><div class="line"><a name="l05862"></a><span class="lineno"> 5862</span>&#160;                <a class="code" href="structcl_1_1detail_1_1_kernel_argument_handler.html">detail::KernelArgumentHandler&lt;T&gt;::size</a>(value),</div><div class="line"><a name="l05863"></a><span class="lineno"> 5863</span>&#160;                <a class="code" href="structcl_1_1detail_1_1_kernel_argument_handler.html">detail::KernelArgumentHandler&lt;T&gt;::ptr</a>(value)),</div><div class="line"><a name="l05864"></a><span class="lineno"> 5864</span>&#160;            __SET_KERNEL_ARGS_ERR);</div><div class="line"><a name="l05865"></a><span class="lineno"> 5865</span>&#160;    }</div><div class="line"><a name="l05866"></a><span class="lineno"> 5866</span>&#160;</div><div class="line"><a name="l05867"></a><span class="lineno"> 5867</span>&#160;    cl_int setArg(cl_uint index, size_type size, <span class="keyword">const</span> <span class="keywordtype">void</span>* argPtr)</div><div class="line"><a name="l05868"></a><span class="lineno"> 5868</span>&#160;    {</div><div class="line"><a name="l05869"></a><span class="lineno"> 5869</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05870"></a><span class="lineno"> 5870</span>&#160;            ::clSetKernelArg(object_, index, size, argPtr),</div><div class="line"><a name="l05871"></a><span class="lineno"> 5871</span>&#160;            __SET_KERNEL_ARGS_ERR);</div><div class="line"><a name="l05872"></a><span class="lineno"> 5872</span>&#160;    }</div><div class="line"><a name="l05873"></a><span class="lineno"> 5873</span>&#160;</div><div class="line"><a name="l05874"></a><span class="lineno"> 5874</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l05875"></a><span class="lineno"> 5875</span>&#160;</div><div class="line"><a name="l05879"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#ada828235b52fc603d5b070544e93f469"> 5879</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_kernel.html#ada828235b52fc603d5b070544e93f469">setSVMPointers</a>(<span class="keyword">const</span> vector&lt;void*&gt; &amp;pointerList)</div><div class="line"><a name="l05880"></a><span class="lineno"> 5880</span>&#160;    {</div><div class="line"><a name="l05881"></a><span class="lineno"> 5881</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05882"></a><span class="lineno"> 5882</span>&#160;            ::clSetKernelExecInfo(</div><div class="line"><a name="l05883"></a><span class="lineno"> 5883</span>&#160;                object_,</div><div class="line"><a name="l05884"></a><span class="lineno"> 5884</span>&#160;                CL_KERNEL_EXEC_INFO_SVM_PTRS,</div><div class="line"><a name="l05885"></a><span class="lineno"> 5885</span>&#160;                <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*)*pointerList.size(),</div><div class="line"><a name="l05886"></a><span class="lineno"> 5886</span>&#160;                pointerList.data()));</div><div class="line"><a name="l05887"></a><span class="lineno"> 5887</span>&#160;    }</div><div class="line"><a name="l05888"></a><span class="lineno"> 5888</span>&#160;</div><div class="line"><a name="l05893"></a><span class="lineno"> 5893</span>&#160;    <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> ArrayLength&gt;</div><div class="line"><a name="l05894"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#abadacb0037f711f3460cf5c44b2d4796"> 5894</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_kernel.html#abadacb0037f711f3460cf5c44b2d4796">setSVMPointers</a>(<span class="keyword">const</span> std::array&lt;void*, ArrayLength&gt; &amp;pointerList)</div><div class="line"><a name="l05895"></a><span class="lineno"> 5895</span>&#160;    {</div><div class="line"><a name="l05896"></a><span class="lineno"> 5896</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05897"></a><span class="lineno"> 5897</span>&#160;            ::clSetKernelExecInfo(</div><div class="line"><a name="l05898"></a><span class="lineno"> 5898</span>&#160;                object_,</div><div class="line"><a name="l05899"></a><span class="lineno"> 5899</span>&#160;                CL_KERNEL_EXEC_INFO_SVM_PTRS,</div><div class="line"><a name="l05900"></a><span class="lineno"> 5900</span>&#160;                <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*)*pointerList.size(),</div><div class="line"><a name="l05901"></a><span class="lineno"> 5901</span>&#160;                pointerList.data()));</div><div class="line"><a name="l05902"></a><span class="lineno"> 5902</span>&#160;    }</div><div class="line"><a name="l05903"></a><span class="lineno"> 5903</span>&#160;</div><div class="line"><a name="l05915"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel.html#aed996666686cddb41d660839e709fcd0"> 5915</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_kernel.html#aed996666686cddb41d660839e709fcd0">enableFineGrainedSystemSVM</a>(<span class="keywordtype">bool</span> svmEnabled)</div><div class="line"><a name="l05916"></a><span class="lineno"> 5916</span>&#160;    {</div><div class="line"><a name="l05917"></a><span class="lineno"> 5917</span>&#160;        cl_bool svmEnabled_ = svmEnabled ? CL_TRUE : CL_FALSE;</div><div class="line"><a name="l05918"></a><span class="lineno"> 5918</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05919"></a><span class="lineno"> 5919</span>&#160;            ::clSetKernelExecInfo(</div><div class="line"><a name="l05920"></a><span class="lineno"> 5920</span>&#160;                object_,</div><div class="line"><a name="l05921"></a><span class="lineno"> 5921</span>&#160;                CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM,</div><div class="line"><a name="l05922"></a><span class="lineno"> 5922</span>&#160;                <span class="keyword">sizeof</span>(cl_bool),</div><div class="line"><a name="l05923"></a><span class="lineno"> 5923</span>&#160;                &amp;svmEnabled_</div><div class="line"><a name="l05924"></a><span class="lineno"> 5924</span>&#160;                )</div><div class="line"><a name="l05925"></a><span class="lineno"> 5925</span>&#160;            );</div><div class="line"><a name="l05926"></a><span class="lineno"> 5926</span>&#160;    }</div><div class="line"><a name="l05927"></a><span class="lineno"> 5927</span>&#160;    </div><div class="line"><a name="l05928"></a><span class="lineno"> 5928</span>&#160;    <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> index, <span class="keywordtype">int</span> ArrayLength, <span class="keyword">class </span>D, <span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span>... Ts&gt;</div><div class="line"><a name="l05929"></a><span class="lineno"> 5929</span>&#160;    <span class="keywordtype">void</span> setSVMPointersHelper(std::array&lt;void*, ArrayLength&gt; &amp;pointerList, <span class="keyword">const</span> pointer&lt;T0, D&gt; &amp;t0, <span class="keyword">const</span> pointer&lt;T1, D&gt; &amp;t1, Ts &amp; ... ts)</div><div class="line"><a name="l05930"></a><span class="lineno"> 5930</span>&#160;    {</div><div class="line"><a name="l05931"></a><span class="lineno"> 5931</span>&#160;        pointerList[index] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">void</span>*<span class="keyword">&gt;</span>(t0.get());</div><div class="line"><a name="l05932"></a><span class="lineno"> 5932</span>&#160;        setSVMPointersHelper&lt;index + 1, ArrayLength&gt;(pointerList, t1, ts...);</div><div class="line"><a name="l05933"></a><span class="lineno"> 5933</span>&#160;    }</div><div class="line"><a name="l05934"></a><span class="lineno"> 5934</span>&#160;</div><div class="line"><a name="l05935"></a><span class="lineno"> 5935</span>&#160;    <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> index, <span class="keywordtype">int</span> ArrayLength, <span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span>... Ts&gt;</div><div class="line"><a name="l05936"></a><span class="lineno"> 5936</span>&#160;    <span class="keyword">typename</span> std::enable_if&lt;std::is_pointer&lt;T0&gt;::value, <span class="keywordtype">void</span>&gt;::type</div><div class="line"><a name="l05937"></a><span class="lineno"> 5937</span>&#160;    setSVMPointersHelper(std::array&lt;void*, ArrayLength&gt; &amp;pointerList, T0 t0, T1 t1, Ts... ts)</div><div class="line"><a name="l05938"></a><span class="lineno"> 5938</span>&#160;    {</div><div class="line"><a name="l05939"></a><span class="lineno"> 5939</span>&#160;        pointerList[index] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">void</span>*<span class="keyword">&gt;</span>(t0);</div><div class="line"><a name="l05940"></a><span class="lineno"> 5940</span>&#160;        setSVMPointersHelper&lt;index + 1, ArrayLength&gt;(pointerList, t1, ts...);</div><div class="line"><a name="l05941"></a><span class="lineno"> 5941</span>&#160;    }</div><div class="line"><a name="l05942"></a><span class="lineno"> 5942</span>&#160;</div><div class="line"><a name="l05943"></a><span class="lineno"> 5943</span>&#160;    <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> index, <span class="keywordtype">int</span> ArrayLength, <span class="keyword">typename</span> T0, <span class="keyword">class</span> D&gt;</div><div class="line"><a name="l05944"></a><span class="lineno"> 5944</span>&#160;    <span class="keywordtype">void</span> setSVMPointersHelper(std::array&lt;void*, ArrayLength&gt; &amp;pointerList, <span class="keyword">const</span> pointer&lt;T0, D&gt; &amp;t0)</div><div class="line"><a name="l05945"></a><span class="lineno"> 5945</span>&#160;    {</div><div class="line"><a name="l05946"></a><span class="lineno"> 5946</span>&#160;        pointerList[index] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">void</span>*<span class="keyword">&gt;</span>(t0.get());</div><div class="line"><a name="l05947"></a><span class="lineno"> 5947</span>&#160;    }</div><div class="line"><a name="l05948"></a><span class="lineno"> 5948</span>&#160;</div><div class="line"><a name="l05949"></a><span class="lineno"> 5949</span>&#160;</div><div class="line"><a name="l05950"></a><span class="lineno"> 5950</span>&#160;    <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> index, <span class="keywordtype">int</span> ArrayLength, <span class="keyword">typename</span> T0&gt;</div><div class="line"><a name="l05951"></a><span class="lineno"> 5951</span>&#160;    <span class="keyword">typename</span> std::enable_if&lt;std::is_pointer&lt;T0&gt;::value, <span class="keywordtype">void</span>&gt;::type</div><div class="line"><a name="l05952"></a><span class="lineno"> 5952</span>&#160;    setSVMPointersHelper(std::array&lt;void*, ArrayLength&gt; &amp;pointerList, T0 t0)</div><div class="line"><a name="l05953"></a><span class="lineno"> 5953</span>&#160;    {</div><div class="line"><a name="l05954"></a><span class="lineno"> 5954</span>&#160;        pointerList[index] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">void</span>*<span class="keyword">&gt;</span>(t0);</div><div class="line"><a name="l05955"></a><span class="lineno"> 5955</span>&#160;    }</div><div class="line"><a name="l05956"></a><span class="lineno"> 5956</span>&#160;</div><div class="line"><a name="l05957"></a><span class="lineno"> 5957</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T0, <span class="keyword">typename</span>... Ts&gt;</div><div class="line"><a name="l05958"></a><span class="lineno"> 5958</span>&#160;    cl_int setSVMPointers(<span class="keyword">const</span> T0 &amp;t0, Ts &amp; ... ts)</div><div class="line"><a name="l05959"></a><span class="lineno"> 5959</span>&#160;    {</div><div class="line"><a name="l05960"></a><span class="lineno"> 5960</span>&#160;        std::array&lt;<span class="keywordtype">void</span>*, 1 + <span class="keyword">sizeof</span>...(Ts)&gt; pointerList;</div><div class="line"><a name="l05961"></a><span class="lineno"> 5961</span>&#160;</div><div class="line"><a name="l05962"></a><span class="lineno"> 5962</span>&#160;        setSVMPointersHelper&lt;0, 1 + <span class="keyword">sizeof</span>...(Ts)&gt;(pointerList, t0, ts...);</div><div class="line"><a name="l05963"></a><span class="lineno"> 5963</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l05964"></a><span class="lineno"> 5964</span>&#160;            ::clSetKernelExecInfo(</div><div class="line"><a name="l05965"></a><span class="lineno"> 5965</span>&#160;            object_,</div><div class="line"><a name="l05966"></a><span class="lineno"> 5966</span>&#160;            CL_KERNEL_EXEC_INFO_SVM_PTRS,</div><div class="line"><a name="l05967"></a><span class="lineno"> 5967</span>&#160;            <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*)*(1 + <span class="keyword">sizeof</span>...(Ts)),</div><div class="line"><a name="l05968"></a><span class="lineno"> 5968</span>&#160;            pointerList.data()));</div><div class="line"><a name="l05969"></a><span class="lineno"> 5969</span>&#160;    }</div><div class="line"><a name="l05970"></a><span class="lineno"> 5970</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l05971"></a><span class="lineno"> 5971</span>&#160;};</div><div class="line"><a name="l05972"></a><span class="lineno"> 5972</span>&#160;</div><div class="line"><a name="l05976"></a><span class="lineno"><a class="line" href="classcl_1_1_program.html"> 5976</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_program.html">Program</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper</a>&lt;cl_program&gt;</div><div class="line"><a name="l05977"></a><span class="lineno"> 5977</span>&#160;{</div><div class="line"><a name="l05978"></a><span class="lineno"> 5978</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l05979"></a><span class="lineno"> 5979</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l05980"></a><span class="lineno"> 5980</span>&#160;    <span class="keyword">typedef</span> vector&lt;vector&lt;unsigned char&gt;&gt; Binaries;</div><div class="line"><a name="l05981"></a><span class="lineno"> 5981</span>&#160;    <span class="keyword">typedef</span> vector&lt;string&gt; Sources;</div><div class="line"><a name="l05982"></a><span class="lineno"> 5982</span>&#160;<span class="preprocessor">#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l05983"></a><span class="lineno"> 5983</span>&#160;    <span class="keyword">typedef</span> vector&lt;std::pair&lt;const void*, size_type&gt; &gt; Binaries;</div><div class="line"><a name="l05984"></a><span class="lineno"> 5984</span>&#160;    <span class="keyword">typedef</span> vector&lt;std::pair&lt;const char*, size_type&gt; &gt; Sources;</div><div class="line"><a name="l05985"></a><span class="lineno"> 5985</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l05986"></a><span class="lineno"> 5986</span>&#160;    </div><div class="line"><a name="l05987"></a><span class="lineno"> 5987</span>&#160;    <a class="code" href="classcl_1_1_program.html">Program</a>(</div><div class="line"><a name="l05988"></a><span class="lineno"> 5988</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">string</span>&amp; source,</div><div class="line"><a name="l05989"></a><span class="lineno"> 5989</span>&#160;        <span class="keywordtype">bool</span> build = <span class="keyword">false</span>,</div><div class="line"><a name="l05990"></a><span class="lineno"> 5990</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l05991"></a><span class="lineno"> 5991</span>&#160;    {</div><div class="line"><a name="l05992"></a><span class="lineno"> 5992</span>&#160;        cl_int error;</div><div class="line"><a name="l05993"></a><span class="lineno"> 5993</span>&#160;</div><div class="line"><a name="l05994"></a><span class="lineno"> 5994</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> * strings = source.c_str();</div><div class="line"><a name="l05995"></a><span class="lineno"> 5995</span>&#160;        <span class="keyword">const</span> size_type length  = source.size();</div><div class="line"><a name="l05996"></a><span class="lineno"> 5996</span>&#160;</div><div class="line"><a name="l05997"></a><span class="lineno"> 5997</span>&#160;        <a class="code" href="classcl_1_1_context.html">Context</a> context = <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">Context::getDefault</a>(err);</div><div class="line"><a name="l05998"></a><span class="lineno"> 5998</span>&#160;</div><div class="line"><a name="l05999"></a><span class="lineno"> 5999</span>&#160;        object_ = ::clCreateProgramWithSource(</div><div class="line"><a name="l06000"></a><span class="lineno"> 6000</span>&#160;            context(), (cl_uint)1, &amp;strings, &amp;length, &amp;error);</div><div class="line"><a name="l06001"></a><span class="lineno"> 6001</span>&#160;</div><div class="line"><a name="l06002"></a><span class="lineno"> 6002</span>&#160;        detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR);</div><div class="line"><a name="l06003"></a><span class="lineno"> 6003</span>&#160;</div><div class="line"><a name="l06004"></a><span class="lineno"> 6004</span>&#160;        <span class="keywordflow">if</span> (error == CL_SUCCESS &amp;&amp; build) {</div><div class="line"><a name="l06005"></a><span class="lineno"> 6005</span>&#160;</div><div class="line"><a name="l06006"></a><span class="lineno"> 6006</span>&#160;            error = ::clBuildProgram(</div><div class="line"><a name="l06007"></a><span class="lineno"> 6007</span>&#160;                object_,</div><div class="line"><a name="l06008"></a><span class="lineno"> 6008</span>&#160;                0,</div><div class="line"><a name="l06009"></a><span class="lineno"> 6009</span>&#160;                NULL,</div><div class="line"><a name="l06010"></a><span class="lineno"> 6010</span>&#160;#<span class="keywordflow">if</span> !defined(CL_HPP_CL_1_2_DEFAULT_BUILD)</div><div class="line"><a name="l06011"></a><span class="lineno"> 6011</span>&#160;                <span class="stringliteral">&quot;-cl-std=CL2.0&quot;</span>,</div><div class="line"><a name="l06012"></a><span class="lineno"> 6012</span>&#160;#<span class="keywordflow">else</span></div><div class="line"><a name="l06013"></a><span class="lineno"> 6013</span>&#160;                <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l06014"></a><span class="lineno"> 6014</span>&#160;#endif <span class="comment">// #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD)</span></div><div class="line"><a name="l06015"></a><span class="lineno"> 6015</span>&#160;                NULL,</div><div class="line"><a name="l06016"></a><span class="lineno"> 6016</span>&#160;                NULL);</div><div class="line"><a name="l06017"></a><span class="lineno"> 6017</span>&#160;</div><div class="line"><a name="l06018"></a><span class="lineno"> 6018</span>&#160;            detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo&lt;CL_PROGRAM_BUILD_LOG&gt;());</div><div class="line"><a name="l06019"></a><span class="lineno"> 6019</span>&#160;        }</div><div class="line"><a name="l06020"></a><span class="lineno"> 6020</span>&#160;</div><div class="line"><a name="l06021"></a><span class="lineno"> 6021</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06022"></a><span class="lineno"> 6022</span>&#160;            *err = error;</div><div class="line"><a name="l06023"></a><span class="lineno"> 6023</span>&#160;        }</div><div class="line"><a name="l06024"></a><span class="lineno"> 6024</span>&#160;    }</div><div class="line"><a name="l06025"></a><span class="lineno"> 6025</span>&#160;</div><div class="line"><a name="l06026"></a><span class="lineno"> 6026</span>&#160;    <a class="code" href="classcl_1_1_program.html">Program</a>(</div><div class="line"><a name="l06027"></a><span class="lineno"> 6027</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l06028"></a><span class="lineno"> 6028</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">string</span>&amp; source,</div><div class="line"><a name="l06029"></a><span class="lineno"> 6029</span>&#160;        <span class="keywordtype">bool</span> build = <span class="keyword">false</span>,</div><div class="line"><a name="l06030"></a><span class="lineno"> 6030</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l06031"></a><span class="lineno"> 6031</span>&#160;    {</div><div class="line"><a name="l06032"></a><span class="lineno"> 6032</span>&#160;        cl_int error;</div><div class="line"><a name="l06033"></a><span class="lineno"> 6033</span>&#160;</div><div class="line"><a name="l06034"></a><span class="lineno"> 6034</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> * strings = source.c_str();</div><div class="line"><a name="l06035"></a><span class="lineno"> 6035</span>&#160;        <span class="keyword">const</span> size_type length  = source.size();</div><div class="line"><a name="l06036"></a><span class="lineno"> 6036</span>&#160;</div><div class="line"><a name="l06037"></a><span class="lineno"> 6037</span>&#160;        object_ = ::clCreateProgramWithSource(</div><div class="line"><a name="l06038"></a><span class="lineno"> 6038</span>&#160;            context(), (cl_uint)1, &amp;strings, &amp;length, &amp;error);</div><div class="line"><a name="l06039"></a><span class="lineno"> 6039</span>&#160;</div><div class="line"><a name="l06040"></a><span class="lineno"> 6040</span>&#160;        detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR);</div><div class="line"><a name="l06041"></a><span class="lineno"> 6041</span>&#160;</div><div class="line"><a name="l06042"></a><span class="lineno"> 6042</span>&#160;        <span class="keywordflow">if</span> (error == CL_SUCCESS &amp;&amp; build) {</div><div class="line"><a name="l06043"></a><span class="lineno"> 6043</span>&#160;            error = ::clBuildProgram(</div><div class="line"><a name="l06044"></a><span class="lineno"> 6044</span>&#160;                object_,</div><div class="line"><a name="l06045"></a><span class="lineno"> 6045</span>&#160;                0,</div><div class="line"><a name="l06046"></a><span class="lineno"> 6046</span>&#160;                NULL,</div><div class="line"><a name="l06047"></a><span class="lineno"> 6047</span>&#160;#<span class="keywordflow">if</span> !defined(CL_HPP_CL_1_2_DEFAULT_BUILD)</div><div class="line"><a name="l06048"></a><span class="lineno"> 6048</span>&#160;                <span class="stringliteral">&quot;-cl-std=CL2.0&quot;</span>,</div><div class="line"><a name="l06049"></a><span class="lineno"> 6049</span>&#160;#<span class="keywordflow">else</span></div><div class="line"><a name="l06050"></a><span class="lineno"> 6050</span>&#160;                <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l06051"></a><span class="lineno"> 6051</span>&#160;#endif <span class="comment">// #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD)</span></div><div class="line"><a name="l06052"></a><span class="lineno"> 6052</span>&#160;                NULL,</div><div class="line"><a name="l06053"></a><span class="lineno"> 6053</span>&#160;                NULL);</div><div class="line"><a name="l06054"></a><span class="lineno"> 6054</span>&#160;            </div><div class="line"><a name="l06055"></a><span class="lineno"> 6055</span>&#160;            detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo&lt;CL_PROGRAM_BUILD_LOG&gt;());</div><div class="line"><a name="l06056"></a><span class="lineno"> 6056</span>&#160;        }</div><div class="line"><a name="l06057"></a><span class="lineno"> 6057</span>&#160;</div><div class="line"><a name="l06058"></a><span class="lineno"> 6058</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06059"></a><span class="lineno"> 6059</span>&#160;            *err = error;</div><div class="line"><a name="l06060"></a><span class="lineno"> 6060</span>&#160;        }</div><div class="line"><a name="l06061"></a><span class="lineno"> 6061</span>&#160;    }</div><div class="line"><a name="l06062"></a><span class="lineno"> 6062</span>&#160;</div><div class="line"><a name="l06067"></a><span class="lineno"><a class="line" href="classcl_1_1_program.html#a367cf581b43d8ad021806a4714753437"> 6067</a></span>&#160;    <a class="code" href="classcl_1_1_program.html#a367cf581b43d8ad021806a4714753437">Program</a>(</div><div class="line"><a name="l06068"></a><span class="lineno"> 6068</span>&#160;        <span class="keyword">const</span> Sources&amp; sources,</div><div class="line"><a name="l06069"></a><span class="lineno"> 6069</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l06070"></a><span class="lineno"> 6070</span>&#160;    {</div><div class="line"><a name="l06071"></a><span class="lineno"> 6071</span>&#160;        cl_int error;</div><div class="line"><a name="l06072"></a><span class="lineno"> 6072</span>&#160;        <a class="code" href="classcl_1_1_context.html">Context</a> context = <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">Context::getDefault</a>(err);</div><div class="line"><a name="l06073"></a><span class="lineno"> 6073</span>&#160;</div><div class="line"><a name="l06074"></a><span class="lineno"> 6074</span>&#160;        <span class="keyword">const</span> size_type n = (size_type)sources.size();</div><div class="line"><a name="l06075"></a><span class="lineno"> 6075</span>&#160;</div><div class="line"><a name="l06076"></a><span class="lineno"> 6076</span>&#160;        vector&lt;size_type&gt; lengths(n);</div><div class="line"><a name="l06077"></a><span class="lineno"> 6077</span>&#160;        vector&lt;const char*&gt; strings(n);</div><div class="line"><a name="l06078"></a><span class="lineno"> 6078</span>&#160;</div><div class="line"><a name="l06079"></a><span class="lineno"> 6079</span>&#160;        <span class="keywordflow">for</span> (size_type i = 0; i &lt; n; ++i) {</div><div class="line"><a name="l06080"></a><span class="lineno"> 6080</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l06081"></a><span class="lineno"> 6081</span>&#160;            strings[i] = sources[(int)i].data();</div><div class="line"><a name="l06082"></a><span class="lineno"> 6082</span>&#160;            lengths[i] = sources[(int)i].length();</div><div class="line"><a name="l06083"></a><span class="lineno"> 6083</span>&#160;<span class="preprocessor">#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l06084"></a><span class="lineno"> 6084</span>&#160;            strings[i] = sources[(int)i].first;</div><div class="line"><a name="l06085"></a><span class="lineno"> 6085</span>&#160;            lengths[i] = sources[(int)i].second;</div><div class="line"><a name="l06086"></a><span class="lineno"> 6086</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l06087"></a><span class="lineno"> 6087</span>&#160;        }</div><div class="line"><a name="l06088"></a><span class="lineno"> 6088</span>&#160;</div><div class="line"><a name="l06089"></a><span class="lineno"> 6089</span>&#160;        object_ = ::clCreateProgramWithSource(</div><div class="line"><a name="l06090"></a><span class="lineno"> 6090</span>&#160;            context(), (cl_uint)n, strings.data(), lengths.data(), &amp;error);</div><div class="line"><a name="l06091"></a><span class="lineno"> 6091</span>&#160;</div><div class="line"><a name="l06092"></a><span class="lineno"> 6092</span>&#160;        detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR);</div><div class="line"><a name="l06093"></a><span class="lineno"> 6093</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06094"></a><span class="lineno"> 6094</span>&#160;            *err = error;</div><div class="line"><a name="l06095"></a><span class="lineno"> 6095</span>&#160;        }</div><div class="line"><a name="l06096"></a><span class="lineno"> 6096</span>&#160;    }</div><div class="line"><a name="l06097"></a><span class="lineno"> 6097</span>&#160;</div><div class="line"><a name="l06102"></a><span class="lineno"><a class="line" href="classcl_1_1_program.html#a400d1a7de104d98f1d3c2aa7dccc21ba"> 6102</a></span>&#160;    <a class="code" href="classcl_1_1_program.html#a400d1a7de104d98f1d3c2aa7dccc21ba">Program</a>(</div><div class="line"><a name="l06103"></a><span class="lineno"> 6103</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l06104"></a><span class="lineno"> 6104</span>&#160;        <span class="keyword">const</span> Sources&amp; sources,</div><div class="line"><a name="l06105"></a><span class="lineno"> 6105</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l06106"></a><span class="lineno"> 6106</span>&#160;    {</div><div class="line"><a name="l06107"></a><span class="lineno"> 6107</span>&#160;        cl_int error;</div><div class="line"><a name="l06108"></a><span class="lineno"> 6108</span>&#160;</div><div class="line"><a name="l06109"></a><span class="lineno"> 6109</span>&#160;        <span class="keyword">const</span> size_type n = (size_type)sources.size();</div><div class="line"><a name="l06110"></a><span class="lineno"> 6110</span>&#160;</div><div class="line"><a name="l06111"></a><span class="lineno"> 6111</span>&#160;        vector&lt;size_type&gt; lengths(n);</div><div class="line"><a name="l06112"></a><span class="lineno"> 6112</span>&#160;        vector&lt;const char*&gt; strings(n);</div><div class="line"><a name="l06113"></a><span class="lineno"> 6113</span>&#160;</div><div class="line"><a name="l06114"></a><span class="lineno"> 6114</span>&#160;        <span class="keywordflow">for</span> (size_type i = 0; i &lt; n; ++i) {</div><div class="line"><a name="l06115"></a><span class="lineno"> 6115</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l06116"></a><span class="lineno"> 6116</span>&#160;            strings[i] = sources[(int)i].data();</div><div class="line"><a name="l06117"></a><span class="lineno"> 6117</span>&#160;            lengths[i] = sources[(int)i].length();</div><div class="line"><a name="l06118"></a><span class="lineno"> 6118</span>&#160;<span class="preprocessor">#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l06119"></a><span class="lineno"> 6119</span>&#160;            strings[i] = sources[(int)i].first;</div><div class="line"><a name="l06120"></a><span class="lineno"> 6120</span>&#160;            lengths[i] = sources[(int)i].second;</div><div class="line"><a name="l06121"></a><span class="lineno"> 6121</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l06122"></a><span class="lineno"> 6122</span>&#160;        }</div><div class="line"><a name="l06123"></a><span class="lineno"> 6123</span>&#160;</div><div class="line"><a name="l06124"></a><span class="lineno"> 6124</span>&#160;        object_ = ::clCreateProgramWithSource(</div><div class="line"><a name="l06125"></a><span class="lineno"> 6125</span>&#160;            context(), (cl_uint)n, strings.data(), lengths.data(), &amp;error);</div><div class="line"><a name="l06126"></a><span class="lineno"> 6126</span>&#160;</div><div class="line"><a name="l06127"></a><span class="lineno"> 6127</span>&#160;        detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR);</div><div class="line"><a name="l06128"></a><span class="lineno"> 6128</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06129"></a><span class="lineno"> 6129</span>&#160;            *err = error;</div><div class="line"><a name="l06130"></a><span class="lineno"> 6130</span>&#160;        }</div><div class="line"><a name="l06131"></a><span class="lineno"> 6131</span>&#160;    }</div><div class="line"><a name="l06132"></a><span class="lineno"> 6132</span>&#160;</div><div class="line"><a name="l06152"></a><span class="lineno"><a class="line" href="classcl_1_1_program.html#af804a4cb0e2dc844c0be0b0b76dbd25a"> 6152</a></span>&#160;    <a class="code" href="classcl_1_1_program.html#af804a4cb0e2dc844c0be0b0b76dbd25a">Program</a>(</div><div class="line"><a name="l06153"></a><span class="lineno"> 6153</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l06154"></a><span class="lineno"> 6154</span>&#160;        <span class="keyword">const</span> vector&lt;Device&gt;&amp; devices,</div><div class="line"><a name="l06155"></a><span class="lineno"> 6155</span>&#160;        <span class="keyword">const</span> Binaries&amp; binaries,</div><div class="line"><a name="l06156"></a><span class="lineno"> 6156</span>&#160;        vector&lt;cl_int&gt;* binaryStatus = NULL,</div><div class="line"><a name="l06157"></a><span class="lineno"> 6157</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l06158"></a><span class="lineno"> 6158</span>&#160;    {</div><div class="line"><a name="l06159"></a><span class="lineno"> 6159</span>&#160;        cl_int error;</div><div class="line"><a name="l06160"></a><span class="lineno"> 6160</span>&#160;        </div><div class="line"><a name="l06161"></a><span class="lineno"> 6161</span>&#160;        <span class="keyword">const</span> size_type numDevices = devices.size();</div><div class="line"><a name="l06162"></a><span class="lineno"> 6162</span>&#160;        </div><div class="line"><a name="l06163"></a><span class="lineno"> 6163</span>&#160;        <span class="comment">// Catch size mismatch early and return</span></div><div class="line"><a name="l06164"></a><span class="lineno"> 6164</span>&#160;        <span class="keywordflow">if</span>(binaries.size() != numDevices) {</div><div class="line"><a name="l06165"></a><span class="lineno"> 6165</span>&#160;            error = CL_INVALID_VALUE;</div><div class="line"><a name="l06166"></a><span class="lineno"> 6166</span>&#160;            detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR);</div><div class="line"><a name="l06167"></a><span class="lineno"> 6167</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06168"></a><span class="lineno"> 6168</span>&#160;                *err = error;</div><div class="line"><a name="l06169"></a><span class="lineno"> 6169</span>&#160;            }</div><div class="line"><a name="l06170"></a><span class="lineno"> 6170</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l06171"></a><span class="lineno"> 6171</span>&#160;        }</div><div class="line"><a name="l06172"></a><span class="lineno"> 6172</span>&#160;</div><div class="line"><a name="l06173"></a><span class="lineno"> 6173</span>&#160;</div><div class="line"><a name="l06174"></a><span class="lineno"> 6174</span>&#160;        vector&lt;size_type&gt; lengths(numDevices);</div><div class="line"><a name="l06175"></a><span class="lineno"> 6175</span>&#160;        vector&lt;const unsigned char*&gt; images(numDevices);</div><div class="line"><a name="l06176"></a><span class="lineno"> 6176</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l06177"></a><span class="lineno"> 6177</span>&#160;        <span class="keywordflow">for</span> (size_type i = 0; i &lt; numDevices; ++i) {</div><div class="line"><a name="l06178"></a><span class="lineno"> 6178</span>&#160;            images[i] = binaries[i].data();</div><div class="line"><a name="l06179"></a><span class="lineno"> 6179</span>&#160;            lengths[i] = binaries[(int)i].size();</div><div class="line"><a name="l06180"></a><span class="lineno"> 6180</span>&#160;        }</div><div class="line"><a name="l06181"></a><span class="lineno"> 6181</span>&#160;<span class="preprocessor">#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l06182"></a><span class="lineno"> 6182</span>&#160;        <span class="keywordflow">for</span> (size_type i = 0; i &lt; numDevices; ++i) {</div><div class="line"><a name="l06183"></a><span class="lineno"> 6183</span>&#160;            images[i] = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)binaries[i].first;</div><div class="line"><a name="l06184"></a><span class="lineno"> 6184</span>&#160;            lengths[i] = binaries[(int)i].second;</div><div class="line"><a name="l06185"></a><span class="lineno"> 6185</span>&#160;        }</div><div class="line"><a name="l06186"></a><span class="lineno"> 6186</span>&#160;<span class="preprocessor">#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY)</span></div><div class="line"><a name="l06187"></a><span class="lineno"> 6187</span>&#160;        </div><div class="line"><a name="l06188"></a><span class="lineno"> 6188</span>&#160;        vector&lt;cl_device_id&gt; deviceIDs(numDevices);</div><div class="line"><a name="l06189"></a><span class="lineno"> 6189</span>&#160;        <span class="keywordflow">for</span>( size_type deviceIndex = 0; deviceIndex &lt; numDevices; ++deviceIndex ) {</div><div class="line"><a name="l06190"></a><span class="lineno"> 6190</span>&#160;            deviceIDs[deviceIndex] = (devices[deviceIndex])();</div><div class="line"><a name="l06191"></a><span class="lineno"> 6191</span>&#160;        }</div><div class="line"><a name="l06192"></a><span class="lineno"> 6192</span>&#160;</div><div class="line"><a name="l06193"></a><span class="lineno"> 6193</span>&#160;        <span class="keywordflow">if</span>(binaryStatus) {</div><div class="line"><a name="l06194"></a><span class="lineno"> 6194</span>&#160;            binaryStatus-&gt;resize(numDevices);</div><div class="line"><a name="l06195"></a><span class="lineno"> 6195</span>&#160;        }</div><div class="line"><a name="l06196"></a><span class="lineno"> 6196</span>&#160;        </div><div class="line"><a name="l06197"></a><span class="lineno"> 6197</span>&#160;        object_ = ::clCreateProgramWithBinary(</div><div class="line"><a name="l06198"></a><span class="lineno"> 6198</span>&#160;            context(), (cl_uint) devices.size(),</div><div class="line"><a name="l06199"></a><span class="lineno"> 6199</span>&#160;            deviceIDs.data(),</div><div class="line"><a name="l06200"></a><span class="lineno"> 6200</span>&#160;            lengths.data(), images.data(), (binaryStatus != NULL &amp;&amp; numDevices &gt; 0)</div><div class="line"><a name="l06201"></a><span class="lineno"> 6201</span>&#160;               ? &amp;binaryStatus-&gt;front()</div><div class="line"><a name="l06202"></a><span class="lineno"> 6202</span>&#160;               : NULL, &amp;error);</div><div class="line"><a name="l06203"></a><span class="lineno"> 6203</span>&#160;</div><div class="line"><a name="l06204"></a><span class="lineno"> 6204</span>&#160;        detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR);</div><div class="line"><a name="l06205"></a><span class="lineno"> 6205</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06206"></a><span class="lineno"> 6206</span>&#160;            *err = error;</div><div class="line"><a name="l06207"></a><span class="lineno"> 6207</span>&#160;        }</div><div class="line"><a name="l06208"></a><span class="lineno"> 6208</span>&#160;    }</div><div class="line"><a name="l06209"></a><span class="lineno"> 6209</span>&#160;</div><div class="line"><a name="l06210"></a><span class="lineno"> 6210</span>&#160;    </div><div class="line"><a name="l06211"></a><span class="lineno"> 6211</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l06212"></a><span class="lineno"> 6212</span>&#160;</div><div class="line"><a name="l06216"></a><span class="lineno"><a class="line" href="classcl_1_1_program.html#a9223820e8ac1901a84e1a1a02a97954b"> 6216</a></span>&#160;    <a class="code" href="classcl_1_1_program.html#a9223820e8ac1901a84e1a1a02a97954b">Program</a>(</div><div class="line"><a name="l06217"></a><span class="lineno"> 6217</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l06218"></a><span class="lineno"> 6218</span>&#160;        <span class="keyword">const</span> vector&lt;Device&gt;&amp; devices,</div><div class="line"><a name="l06219"></a><span class="lineno"> 6219</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">string</span>&amp; kernelNames,</div><div class="line"><a name="l06220"></a><span class="lineno"> 6220</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l06221"></a><span class="lineno"> 6221</span>&#160;    {</div><div class="line"><a name="l06222"></a><span class="lineno"> 6222</span>&#160;        cl_int error;</div><div class="line"><a name="l06223"></a><span class="lineno"> 6223</span>&#160;</div><div class="line"><a name="l06224"></a><span class="lineno"> 6224</span>&#160;</div><div class="line"><a name="l06225"></a><span class="lineno"> 6225</span>&#160;        size_type numDevices = devices.size();</div><div class="line"><a name="l06226"></a><span class="lineno"> 6226</span>&#160;        vector&lt;cl_device_id&gt; deviceIDs(numDevices);</div><div class="line"><a name="l06227"></a><span class="lineno"> 6227</span>&#160;        <span class="keywordflow">for</span>( size_type deviceIndex = 0; deviceIndex &lt; numDevices; ++deviceIndex ) {</div><div class="line"><a name="l06228"></a><span class="lineno"> 6228</span>&#160;            deviceIDs[deviceIndex] = (devices[deviceIndex])();</div><div class="line"><a name="l06229"></a><span class="lineno"> 6229</span>&#160;        }</div><div class="line"><a name="l06230"></a><span class="lineno"> 6230</span>&#160;        </div><div class="line"><a name="l06231"></a><span class="lineno"> 6231</span>&#160;        object_ = ::clCreateProgramWithBuiltInKernels(</div><div class="line"><a name="l06232"></a><span class="lineno"> 6232</span>&#160;            context(), </div><div class="line"><a name="l06233"></a><span class="lineno"> 6233</span>&#160;            (cl_uint) devices.size(),</div><div class="line"><a name="l06234"></a><span class="lineno"> 6234</span>&#160;            deviceIDs.data(),</div><div class="line"><a name="l06235"></a><span class="lineno"> 6235</span>&#160;            kernelNames.c_str(), </div><div class="line"><a name="l06236"></a><span class="lineno"> 6236</span>&#160;            &amp;error);</div><div class="line"><a name="l06237"></a><span class="lineno"> 6237</span>&#160;</div><div class="line"><a name="l06238"></a><span class="lineno"> 6238</span>&#160;        detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR);</div><div class="line"><a name="l06239"></a><span class="lineno"> 6239</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06240"></a><span class="lineno"> 6240</span>&#160;            *err = error;</div><div class="line"><a name="l06241"></a><span class="lineno"> 6241</span>&#160;        }</div><div class="line"><a name="l06242"></a><span class="lineno"> 6242</span>&#160;    }</div><div class="line"><a name="l06243"></a><span class="lineno"> 6243</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l06244"></a><span class="lineno"> 6244</span>&#160;</div><div class="line"><a name="l06245"></a><span class="lineno"> 6245</span>&#160;    <a class="code" href="classcl_1_1_program.html">Program</a>() { }</div><div class="line"><a name="l06246"></a><span class="lineno"> 6246</span>&#160;    </div><div class="line"><a name="l06247"></a><span class="lineno"> 6247</span>&#160;</div><div class="line"><a name="l06254"></a><span class="lineno"><a class="line" href="classcl_1_1_program.html#aaac370eec783f85a00945d701d6a7e19"> 6254</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_program.html#aaac370eec783f85a00945d701d6a7e19">Program</a>(<span class="keyword">const</span> cl_program&amp; program, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l06255"></a><span class="lineno"> 6255</span>&#160;        detail::Wrapper&lt;cl_type&gt;(program, retainObject) { }</div><div class="line"><a name="l06256"></a><span class="lineno"> 6256</span>&#160;</div><div class="line"><a name="l06257"></a><span class="lineno"> 6257</span>&#160;    <a class="code" href="classcl_1_1_program.html">Program</a>&amp; operator = (<span class="keyword">const</span> cl_program&amp; rhs)</div><div class="line"><a name="l06258"></a><span class="lineno"> 6258</span>&#160;    {</div><div class="line"><a name="l06259"></a><span class="lineno"> 6259</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(rhs);</div><div class="line"><a name="l06260"></a><span class="lineno"> 6260</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06261"></a><span class="lineno"> 6261</span>&#160;    }</div><div class="line"><a name="l06262"></a><span class="lineno"> 6262</span>&#160;</div><div class="line"><a name="l06266"></a><span class="lineno"><a class="line" href="classcl_1_1_program.html#a0ec5552449e9fefc46e7bcd399d15f51"> 6266</a></span>&#160;    <a class="code" href="classcl_1_1_program.html#a0ec5552449e9fefc46e7bcd399d15f51">Program</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_program.html">Program</a>&amp; program) : detail::Wrapper&lt;cl_type&gt;(program) {}</div><div class="line"><a name="l06267"></a><span class="lineno"> 6267</span>&#160;</div><div class="line"><a name="l06271"></a><span class="lineno"><a class="line" href="classcl_1_1_program.html#ab28c814ce62db2051041c4bf1c9b5561"> 6271</a></span>&#160;    <a class="code" href="classcl_1_1_program.html">Program</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_program.html">Program</a> &amp;program)</div><div class="line"><a name="l06272"></a><span class="lineno"> 6272</span>&#160;    {</div><div class="line"><a name="l06273"></a><span class="lineno"> 6273</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(program);</div><div class="line"><a name="l06274"></a><span class="lineno"> 6274</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06275"></a><span class="lineno"> 6275</span>&#160;    }</div><div class="line"><a name="l06276"></a><span class="lineno"> 6276</span>&#160;</div><div class="line"><a name="l06280"></a><span class="lineno"><a class="line" href="classcl_1_1_program.html#a1666a02c393b46730b24a76f79302b15"> 6280</a></span>&#160;    <a class="code" href="classcl_1_1_program.html#a1666a02c393b46730b24a76f79302b15">Program</a>(<a class="code" href="classcl_1_1_program.html">Program</a>&amp;&amp; program) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;</a>(std::move(program)) {}</div><div class="line"><a name="l06281"></a><span class="lineno"> 6281</span>&#160;</div><div class="line"><a name="l06285"></a><span class="lineno"><a class="line" href="classcl_1_1_program.html#aca2f3a6bb7028fa2021d274cb5664725"> 6285</a></span>&#160;    <a class="code" href="classcl_1_1_program.html">Program</a>&amp; operator = (<a class="code" href="classcl_1_1_program.html">Program</a> &amp;&amp;program)</div><div class="line"><a name="l06286"></a><span class="lineno"> 6286</span>&#160;    {</div><div class="line"><a name="l06287"></a><span class="lineno"> 6287</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(std::move(program));</div><div class="line"><a name="l06288"></a><span class="lineno"> 6288</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l06289"></a><span class="lineno"> 6289</span>&#160;    }</div><div class="line"><a name="l06290"></a><span class="lineno"> 6290</span>&#160;</div><div class="line"><a name="l06291"></a><span class="lineno"> 6291</span>&#160;    cl_int build(</div><div class="line"><a name="l06292"></a><span class="lineno"> 6292</span>&#160;        <span class="keyword">const</span> vector&lt;Device&gt;&amp; devices,</div><div class="line"><a name="l06293"></a><span class="lineno"> 6293</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* options = NULL,</div><div class="line"><a name="l06294"></a><span class="lineno"> 6294</span>&#160;        <span class="keywordtype">void</span> (CL_CALLBACK * notifyFptr)(cl_program, <span class="keywordtype">void</span> *) = NULL,</div><div class="line"><a name="l06295"></a><span class="lineno"> 6295</span>&#160;        <span class="keywordtype">void</span>* data = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l06296"></a><span class="lineno"> 6296</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l06297"></a><span class="lineno"> 6297</span>&#160;        size_type numDevices = devices.size();</div><div class="line"><a name="l06298"></a><span class="lineno"> 6298</span>&#160;        vector&lt;cl_device_id&gt; deviceIDs(numDevices);</div><div class="line"><a name="l06299"></a><span class="lineno"> 6299</span>&#160;        </div><div class="line"><a name="l06300"></a><span class="lineno"> 6300</span>&#160;        <span class="keywordflow">for</span>( size_type deviceIndex = 0; deviceIndex &lt; numDevices; ++deviceIndex ) {</div><div class="line"><a name="l06301"></a><span class="lineno"> 6301</span>&#160;            deviceIDs[deviceIndex] = (devices[deviceIndex])();</div><div class="line"><a name="l06302"></a><span class="lineno"> 6302</span>&#160;        }</div><div class="line"><a name="l06303"></a><span class="lineno"> 6303</span>&#160;</div><div class="line"><a name="l06304"></a><span class="lineno"> 6304</span>&#160;        cl_int buildError = ::clBuildProgram(</div><div class="line"><a name="l06305"></a><span class="lineno"> 6305</span>&#160;            object_,</div><div class="line"><a name="l06306"></a><span class="lineno"> 6306</span>&#160;            (cl_uint)</div><div class="line"><a name="l06307"></a><span class="lineno"> 6307</span>&#160;            devices.size(),</div><div class="line"><a name="l06308"></a><span class="lineno"> 6308</span>&#160;            deviceIDs.data(),</div><div class="line"><a name="l06309"></a><span class="lineno"> 6309</span>&#160;            options,</div><div class="line"><a name="l06310"></a><span class="lineno"> 6310</span>&#160;            notifyFptr,</div><div class="line"><a name="l06311"></a><span class="lineno"> 6311</span>&#160;            data);</div><div class="line"><a name="l06312"></a><span class="lineno"> 6312</span>&#160;</div><div class="line"><a name="l06313"></a><span class="lineno"> 6313</span>&#160;        <span class="keywordflow">return</span> detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo&lt;CL_PROGRAM_BUILD_LOG&gt;());</div><div class="line"><a name="l06314"></a><span class="lineno"> 6314</span>&#160;    }</div><div class="line"><a name="l06315"></a><span class="lineno"> 6315</span>&#160;</div><div class="line"><a name="l06316"></a><span class="lineno"> 6316</span>&#160;    cl_int build(</div><div class="line"><a name="l06317"></a><span class="lineno"> 6317</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* options = NULL,</div><div class="line"><a name="l06318"></a><span class="lineno"> 6318</span>&#160;        <span class="keywordtype">void</span> (CL_CALLBACK * notifyFptr)(cl_program, <span class="keywordtype">void</span> *) = NULL,</div><div class="line"><a name="l06319"></a><span class="lineno"> 6319</span>&#160;        <span class="keywordtype">void</span>* data = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l06320"></a><span class="lineno"> 6320</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l06321"></a><span class="lineno"> 6321</span>&#160;        cl_int buildError = ::clBuildProgram(</div><div class="line"><a name="l06322"></a><span class="lineno"> 6322</span>&#160;            object_,</div><div class="line"><a name="l06323"></a><span class="lineno"> 6323</span>&#160;            0,</div><div class="line"><a name="l06324"></a><span class="lineno"> 6324</span>&#160;            NULL,</div><div class="line"><a name="l06325"></a><span class="lineno"> 6325</span>&#160;            options,</div><div class="line"><a name="l06326"></a><span class="lineno"> 6326</span>&#160;            notifyFptr,</div><div class="line"><a name="l06327"></a><span class="lineno"> 6327</span>&#160;            data);</div><div class="line"><a name="l06328"></a><span class="lineno"> 6328</span>&#160;</div><div class="line"><a name="l06329"></a><span class="lineno"> 6329</span>&#160;</div><div class="line"><a name="l06330"></a><span class="lineno"> 6330</span>&#160;        <span class="keywordflow">return</span> detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo&lt;CL_PROGRAM_BUILD_LOG&gt;());</div><div class="line"><a name="l06331"></a><span class="lineno"> 6331</span>&#160;    }</div><div class="line"><a name="l06332"></a><span class="lineno"> 6332</span>&#160;</div><div class="line"><a name="l06333"></a><span class="lineno"> 6333</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l06334"></a><span class="lineno"> 6334</span>&#160;    cl_int compile(</div><div class="line"><a name="l06335"></a><span class="lineno"> 6335</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* options = NULL,</div><div class="line"><a name="l06336"></a><span class="lineno"> 6336</span>&#160;        <span class="keywordtype">void</span> (CL_CALLBACK * notifyFptr)(cl_program, <span class="keywordtype">void</span> *) = NULL,</div><div class="line"><a name="l06337"></a><span class="lineno"> 6337</span>&#160;        <span class="keywordtype">void</span>* data = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l06338"></a><span class="lineno"> 6338</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l06339"></a><span class="lineno"> 6339</span>&#160;        cl_int error = ::clCompileProgram(</div><div class="line"><a name="l06340"></a><span class="lineno"> 6340</span>&#160;            object_,</div><div class="line"><a name="l06341"></a><span class="lineno"> 6341</span>&#160;            0,</div><div class="line"><a name="l06342"></a><span class="lineno"> 6342</span>&#160;            NULL,</div><div class="line"><a name="l06343"></a><span class="lineno"> 6343</span>&#160;            options,</div><div class="line"><a name="l06344"></a><span class="lineno"> 6344</span>&#160;            0,</div><div class="line"><a name="l06345"></a><span class="lineno"> 6345</span>&#160;            NULL,</div><div class="line"><a name="l06346"></a><span class="lineno"> 6346</span>&#160;            NULL,</div><div class="line"><a name="l06347"></a><span class="lineno"> 6347</span>&#160;            notifyFptr,</div><div class="line"><a name="l06348"></a><span class="lineno"> 6348</span>&#160;            data);</div><div class="line"><a name="l06349"></a><span class="lineno"> 6349</span>&#160;        <span class="keywordflow">return</span> detail::buildErrHandler(error, __COMPILE_PROGRAM_ERR, getBuildInfo&lt;CL_PROGRAM_BUILD_LOG&gt;());</div><div class="line"><a name="l06350"></a><span class="lineno"> 6350</span>&#160;    }</div><div class="line"><a name="l06351"></a><span class="lineno"> 6351</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l06352"></a><span class="lineno"> 6352</span>&#160;</div><div class="line"><a name="l06353"></a><span class="lineno"> 6353</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l06354"></a><span class="lineno"> 6354</span>&#160;    cl_int getInfo(cl_program_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l06355"></a><span class="lineno"> 6355</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l06356"></a><span class="lineno"> 6356</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l06357"></a><span class="lineno"> 6357</span>&#160;            detail::getInfo(&amp;::clGetProgramInfo, object_, name, param),</div><div class="line"><a name="l06358"></a><span class="lineno"> 6358</span>&#160;            __GET_PROGRAM_INFO_ERR);</div><div class="line"><a name="l06359"></a><span class="lineno"> 6359</span>&#160;    }</div><div class="line"><a name="l06360"></a><span class="lineno"> 6360</span>&#160;</div><div class="line"><a name="l06361"></a><span class="lineno"> 6361</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l06362"></a><span class="lineno"> 6362</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_program_info, name&gt;::param_type</a></div><div class="line"><a name="l06363"></a><span class="lineno"> 6363</span>&#160;    getInfo(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l06364"></a><span class="lineno"> 6364</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l06365"></a><span class="lineno"> 6365</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l06366"></a><span class="lineno"> 6366</span>&#160;            detail::cl_program_info, name&gt;::param_type param;</div><div class="line"><a name="l06367"></a><span class="lineno"> 6367</span>&#160;        cl_int result = getInfo(name, &amp;param);</div><div class="line"><a name="l06368"></a><span class="lineno"> 6368</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06369"></a><span class="lineno"> 6369</span>&#160;            *err = result;</div><div class="line"><a name="l06370"></a><span class="lineno"> 6370</span>&#160;        }</div><div class="line"><a name="l06371"></a><span class="lineno"> 6371</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l06372"></a><span class="lineno"> 6372</span>&#160;    }</div><div class="line"><a name="l06373"></a><span class="lineno"> 6373</span>&#160;</div><div class="line"><a name="l06374"></a><span class="lineno"> 6374</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l06375"></a><span class="lineno"> 6375</span>&#160;    cl_int getBuildInfo(</div><div class="line"><a name="l06376"></a><span class="lineno"> 6376</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a>&amp; device, cl_program_build_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l06377"></a><span class="lineno"> 6377</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l06378"></a><span class="lineno"> 6378</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l06379"></a><span class="lineno"> 6379</span>&#160;            detail::getInfo(</div><div class="line"><a name="l06380"></a><span class="lineno"> 6380</span>&#160;                &amp;::clGetProgramBuildInfo, object_, device(), name, param),</div><div class="line"><a name="l06381"></a><span class="lineno"> 6381</span>&#160;                __GET_PROGRAM_BUILD_INFO_ERR);</div><div class="line"><a name="l06382"></a><span class="lineno"> 6382</span>&#160;    }</div><div class="line"><a name="l06383"></a><span class="lineno"> 6383</span>&#160;</div><div class="line"><a name="l06384"></a><span class="lineno"> 6384</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l06385"></a><span class="lineno"> 6385</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_program_build_info, name&gt;::param_type</a></div><div class="line"><a name="l06386"></a><span class="lineno"> 6386</span>&#160;    getBuildInfo(<span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a>&amp; device, cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l06387"></a><span class="lineno"> 6387</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l06388"></a><span class="lineno"> 6388</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l06389"></a><span class="lineno"> 6389</span>&#160;            detail::cl_program_build_info, name&gt;::param_type param;</div><div class="line"><a name="l06390"></a><span class="lineno"> 6390</span>&#160;        cl_int result = getBuildInfo(device, name, &amp;param);</div><div class="line"><a name="l06391"></a><span class="lineno"> 6391</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06392"></a><span class="lineno"> 6392</span>&#160;            *err = result;</div><div class="line"><a name="l06393"></a><span class="lineno"> 6393</span>&#160;        }</div><div class="line"><a name="l06394"></a><span class="lineno"> 6394</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l06395"></a><span class="lineno"> 6395</span>&#160;    }</div><div class="line"><a name="l06396"></a><span class="lineno"> 6396</span>&#160;    </div><div class="line"><a name="l06402"></a><span class="lineno"> 6402</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt;</div><div class="line"><a name="l06403"></a><span class="lineno"> 6403</span>&#160;    vector&lt;std::pair&lt;cl::Device, typename detail::param_traits&lt;detail::cl_program_build_info, name&gt;::param_type&gt;&gt;</div><div class="line"><a name="l06404"></a><span class="lineno"><a class="line" href="classcl_1_1_program.html#a83a87a7d0dbbede2b28dcf8836a624b0"> 6404</a></span>&#160;        <a class="code" href="classcl_1_1_program.html#a83a87a7d0dbbede2b28dcf8836a624b0">getBuildInfo</a>(cl_int *err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l06405"></a><span class="lineno"> 6405</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l06406"></a><span class="lineno"> 6406</span>&#160;        cl_int result = CL_SUCCESS;</div><div class="line"><a name="l06407"></a><span class="lineno"> 6407</span>&#160;</div><div class="line"><a name="l06408"></a><span class="lineno"> 6408</span>&#160;        <span class="keyword">auto</span> devs = getInfo&lt;CL_PROGRAM_DEVICES&gt;(&amp;result);</div><div class="line"><a name="l06409"></a><span class="lineno"> 6409</span>&#160;        vector&lt;std::pair&lt;cl::Device, typename detail::param_traits&lt;detail::cl_program_build_info, name&gt;::param_type&gt;&gt;</div><div class="line"><a name="l06410"></a><span class="lineno"> 6410</span>&#160;            devInfo;</div><div class="line"><a name="l06411"></a><span class="lineno"> 6411</span>&#160;</div><div class="line"><a name="l06412"></a><span class="lineno"> 6412</span>&#160;        <span class="comment">// If there was an initial error from getInfo return the error</span></div><div class="line"><a name="l06413"></a><span class="lineno"> 6413</span>&#160;        <span class="keywordflow">if</span> (result != CL_SUCCESS) {</div><div class="line"><a name="l06414"></a><span class="lineno"> 6414</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06415"></a><span class="lineno"> 6415</span>&#160;                *err = result;</div><div class="line"><a name="l06416"></a><span class="lineno"> 6416</span>&#160;            }</div><div class="line"><a name="l06417"></a><span class="lineno"> 6417</span>&#160;            <span class="keywordflow">return</span> devInfo;</div><div class="line"><a name="l06418"></a><span class="lineno"> 6418</span>&#160;        }</div><div class="line"><a name="l06419"></a><span class="lineno"> 6419</span>&#160;</div><div class="line"><a name="l06420"></a><span class="lineno"> 6420</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">cl::Device</a> &amp;d : devs) {</div><div class="line"><a name="l06421"></a><span class="lineno"> 6421</span>&#160;            <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l06422"></a><span class="lineno"> 6422</span>&#160;                detail::cl_program_build_info, name&gt;::param_type param;</div><div class="line"><a name="l06423"></a><span class="lineno"> 6423</span>&#160;            result = getBuildInfo(d, name, &amp;param);</div><div class="line"><a name="l06424"></a><span class="lineno"> 6424</span>&#160;            devInfo.push_back(</div><div class="line"><a name="l06425"></a><span class="lineno"> 6425</span>&#160;                std::pair&lt;<a class="code" href="classcl_1_1_device.html">cl::Device</a>, <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_program_build_info, name&gt;::param_type</a>&gt;</div><div class="line"><a name="l06426"></a><span class="lineno"> 6426</span>&#160;                (d, param));</div><div class="line"><a name="l06427"></a><span class="lineno"> 6427</span>&#160;            <span class="keywordflow">if</span> (result != CL_SUCCESS) {</div><div class="line"><a name="l06428"></a><span class="lineno"> 6428</span>&#160;                <span class="comment">// On error, leave the loop and return the error code</span></div><div class="line"><a name="l06429"></a><span class="lineno"> 6429</span>&#160;                <span class="keywordflow">break</span>;</div><div class="line"><a name="l06430"></a><span class="lineno"> 6430</span>&#160;            }</div><div class="line"><a name="l06431"></a><span class="lineno"> 6431</span>&#160;        }</div><div class="line"><a name="l06432"></a><span class="lineno"> 6432</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06433"></a><span class="lineno"> 6433</span>&#160;            *err = result;</div><div class="line"><a name="l06434"></a><span class="lineno"> 6434</span>&#160;        }</div><div class="line"><a name="l06435"></a><span class="lineno"> 6435</span>&#160;        <span class="keywordflow">if</span> (result != CL_SUCCESS) {</div><div class="line"><a name="l06436"></a><span class="lineno"> 6436</span>&#160;            devInfo.clear();</div><div class="line"><a name="l06437"></a><span class="lineno"> 6437</span>&#160;        }</div><div class="line"><a name="l06438"></a><span class="lineno"> 6438</span>&#160;        <span class="keywordflow">return</span> devInfo;</div><div class="line"><a name="l06439"></a><span class="lineno"> 6439</span>&#160;    }</div><div class="line"><a name="l06440"></a><span class="lineno"> 6440</span>&#160;</div><div class="line"><a name="l06441"></a><span class="lineno"> 6441</span>&#160;    cl_int createKernels(vector&lt;Kernel&gt;* kernels)</div><div class="line"><a name="l06442"></a><span class="lineno"> 6442</span>&#160;    {</div><div class="line"><a name="l06443"></a><span class="lineno"> 6443</span>&#160;        cl_uint numKernels;</div><div class="line"><a name="l06444"></a><span class="lineno"> 6444</span>&#160;        cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &amp;numKernels);</div><div class="line"><a name="l06445"></a><span class="lineno"> 6445</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l06446"></a><span class="lineno"> 6446</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR);</div><div class="line"><a name="l06447"></a><span class="lineno"> 6447</span>&#160;        }</div><div class="line"><a name="l06448"></a><span class="lineno"> 6448</span>&#160;</div><div class="line"><a name="l06449"></a><span class="lineno"> 6449</span>&#160;        vector&lt;cl_kernel&gt; value(numKernels);</div><div class="line"><a name="l06450"></a><span class="lineno"> 6450</span>&#160;        </div><div class="line"><a name="l06451"></a><span class="lineno"> 6451</span>&#160;        err = ::clCreateKernelsInProgram(</div><div class="line"><a name="l06452"></a><span class="lineno"> 6452</span>&#160;            object_, numKernels, value.data(), NULL);</div><div class="line"><a name="l06453"></a><span class="lineno"> 6453</span>&#160;        <span class="keywordflow">if</span> (err != CL_SUCCESS) {</div><div class="line"><a name="l06454"></a><span class="lineno"> 6454</span>&#160;            <span class="keywordflow">return</span> detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR);</div><div class="line"><a name="l06455"></a><span class="lineno"> 6455</span>&#160;        }</div><div class="line"><a name="l06456"></a><span class="lineno"> 6456</span>&#160;</div><div class="line"><a name="l06457"></a><span class="lineno"> 6457</span>&#160;        <span class="keywordflow">if</span> (kernels) {</div><div class="line"><a name="l06458"></a><span class="lineno"> 6458</span>&#160;            kernels-&gt;resize(value.size());</div><div class="line"><a name="l06459"></a><span class="lineno"> 6459</span>&#160;</div><div class="line"><a name="l06460"></a><span class="lineno"> 6460</span>&#160;            <span class="comment">// Assign to param, constructing with retain behaviour</span></div><div class="line"><a name="l06461"></a><span class="lineno"> 6461</span>&#160;            <span class="comment">// to correctly capture each underlying CL object</span></div><div class="line"><a name="l06462"></a><span class="lineno"> 6462</span>&#160;            <span class="keywordflow">for</span> (size_type i = 0; i &lt; value.size(); i++) {</div><div class="line"><a name="l06463"></a><span class="lineno"> 6463</span>&#160;                <span class="comment">// We do not need to retain because this kernel is being created </span></div><div class="line"><a name="l06464"></a><span class="lineno"> 6464</span>&#160;                <span class="comment">// by the runtime</span></div><div class="line"><a name="l06465"></a><span class="lineno"> 6465</span>&#160;                (*kernels)[i] = <a class="code" href="classcl_1_1_kernel.html">Kernel</a>(value[i], <span class="keyword">false</span>);</div><div class="line"><a name="l06466"></a><span class="lineno"> 6466</span>&#160;            }</div><div class="line"><a name="l06467"></a><span class="lineno"> 6467</span>&#160;        }</div><div class="line"><a name="l06468"></a><span class="lineno"> 6468</span>&#160;        <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l06469"></a><span class="lineno"> 6469</span>&#160;    }</div><div class="line"><a name="l06470"></a><span class="lineno"> 6470</span>&#160;};</div><div class="line"><a name="l06471"></a><span class="lineno"> 6471</span>&#160;</div><div class="line"><a name="l06472"></a><span class="lineno"> 6472</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l06473"></a><span class="lineno"> 6473</span>&#160;<span class="keyword">inline</span> <a class="code" href="classcl_1_1_program.html">Program</a> linkProgram(</div><div class="line"><a name="l06474"></a><span class="lineno"> 6474</span>&#160;    <a class="code" href="classcl_1_1_program.html">Program</a> input1,</div><div class="line"><a name="l06475"></a><span class="lineno"> 6475</span>&#160;    <a class="code" href="classcl_1_1_program.html">Program</a> input2,</div><div class="line"><a name="l06476"></a><span class="lineno"> 6476</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* options = NULL,</div><div class="line"><a name="l06477"></a><span class="lineno"> 6477</span>&#160;    <span class="keywordtype">void</span> (CL_CALLBACK * notifyFptr)(cl_program, <span class="keywordtype">void</span> *) = NULL,</div><div class="line"><a name="l06478"></a><span class="lineno"> 6478</span>&#160;    <span class="keywordtype">void</span>* data = NULL,</div><div class="line"><a name="l06479"></a><span class="lineno"> 6479</span>&#160;    cl_int* err = NULL) </div><div class="line"><a name="l06480"></a><span class="lineno"> 6480</span>&#160;{</div><div class="line"><a name="l06481"></a><span class="lineno"> 6481</span>&#160;    cl_int error_local = CL_SUCCESS;</div><div class="line"><a name="l06482"></a><span class="lineno"> 6482</span>&#160;</div><div class="line"><a name="l06483"></a><span class="lineno"> 6483</span>&#160;    cl_program programs[2] = { input1(), input2() };</div><div class="line"><a name="l06484"></a><span class="lineno"> 6484</span>&#160;</div><div class="line"><a name="l06485"></a><span class="lineno"> 6485</span>&#160;    <a class="code" href="classcl_1_1_context.html">Context</a> ctx = input1.getInfo&lt;CL_PROGRAM_CONTEXT&gt;(&amp;error_local);</div><div class="line"><a name="l06486"></a><span class="lineno"> 6486</span>&#160;    <span class="keywordflow">if</span>(error_local!=CL_SUCCESS) {</div><div class="line"><a name="l06487"></a><span class="lineno"> 6487</span>&#160;        detail::errHandler(error_local, __LINK_PROGRAM_ERR);</div><div class="line"><a name="l06488"></a><span class="lineno"> 6488</span>&#160;    }</div><div class="line"><a name="l06489"></a><span class="lineno"> 6489</span>&#160;</div><div class="line"><a name="l06490"></a><span class="lineno"> 6490</span>&#160;    cl_program prog = ::clLinkProgram(</div><div class="line"><a name="l06491"></a><span class="lineno"> 6491</span>&#160;        ctx(),</div><div class="line"><a name="l06492"></a><span class="lineno"> 6492</span>&#160;        0,</div><div class="line"><a name="l06493"></a><span class="lineno"> 6493</span>&#160;        NULL,</div><div class="line"><a name="l06494"></a><span class="lineno"> 6494</span>&#160;        options,</div><div class="line"><a name="l06495"></a><span class="lineno"> 6495</span>&#160;        2,</div><div class="line"><a name="l06496"></a><span class="lineno"> 6496</span>&#160;        programs,</div><div class="line"><a name="l06497"></a><span class="lineno"> 6497</span>&#160;        notifyFptr,</div><div class="line"><a name="l06498"></a><span class="lineno"> 6498</span>&#160;        data,</div><div class="line"><a name="l06499"></a><span class="lineno"> 6499</span>&#160;        &amp;error_local);</div><div class="line"><a name="l06500"></a><span class="lineno"> 6500</span>&#160;</div><div class="line"><a name="l06501"></a><span class="lineno"> 6501</span>&#160;    detail::errHandler(error_local,__COMPILE_PROGRAM_ERR);</div><div class="line"><a name="l06502"></a><span class="lineno"> 6502</span>&#160;    <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06503"></a><span class="lineno"> 6503</span>&#160;        *err = error_local;</div><div class="line"><a name="l06504"></a><span class="lineno"> 6504</span>&#160;    }</div><div class="line"><a name="l06505"></a><span class="lineno"> 6505</span>&#160;</div><div class="line"><a name="l06506"></a><span class="lineno"> 6506</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classcl_1_1_program.html">Program</a>(prog);</div><div class="line"><a name="l06507"></a><span class="lineno"> 6507</span>&#160;}</div><div class="line"><a name="l06508"></a><span class="lineno"> 6508</span>&#160;</div><div class="line"><a name="l06509"></a><span class="lineno"> 6509</span>&#160;<span class="keyword">inline</span> <a class="code" href="classcl_1_1_program.html">Program</a> linkProgram(</div><div class="line"><a name="l06510"></a><span class="lineno"> 6510</span>&#160;    vector&lt;Program&gt; inputPrograms,</div><div class="line"><a name="l06511"></a><span class="lineno"> 6511</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* options = NULL,</div><div class="line"><a name="l06512"></a><span class="lineno"> 6512</span>&#160;    <span class="keywordtype">void</span> (CL_CALLBACK * notifyFptr)(cl_program, <span class="keywordtype">void</span> *) = NULL,</div><div class="line"><a name="l06513"></a><span class="lineno"> 6513</span>&#160;    <span class="keywordtype">void</span>* data = NULL,</div><div class="line"><a name="l06514"></a><span class="lineno"> 6514</span>&#160;    cl_int* err = NULL) </div><div class="line"><a name="l06515"></a><span class="lineno"> 6515</span>&#160;{</div><div class="line"><a name="l06516"></a><span class="lineno"> 6516</span>&#160;    cl_int error_local = CL_SUCCESS;</div><div class="line"><a name="l06517"></a><span class="lineno"> 6517</span>&#160;</div><div class="line"><a name="l06518"></a><span class="lineno"> 6518</span>&#160;    vector&lt;cl_program&gt; programs(inputPrograms.size());</div><div class="line"><a name="l06519"></a><span class="lineno"> 6519</span>&#160;</div><div class="line"><a name="l06520"></a><span class="lineno"> 6520</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; inputPrograms.size(); i++) {</div><div class="line"><a name="l06521"></a><span class="lineno"> 6521</span>&#160;        programs[i] = inputPrograms[i]();</div><div class="line"><a name="l06522"></a><span class="lineno"> 6522</span>&#160;    }</div><div class="line"><a name="l06523"></a><span class="lineno"> 6523</span>&#160;    </div><div class="line"><a name="l06524"></a><span class="lineno"> 6524</span>&#160;    <a class="code" href="classcl_1_1_context.html">Context</a> ctx;</div><div class="line"><a name="l06525"></a><span class="lineno"> 6525</span>&#160;    <span class="keywordflow">if</span>(inputPrograms.size() &gt; 0) {</div><div class="line"><a name="l06526"></a><span class="lineno"> 6526</span>&#160;        ctx = inputPrograms[0].<a class="code" href="classcl_1_1_context.html#a979d15f9228089af2a657a523b1186e8">getInfo</a>&lt;CL_PROGRAM_CONTEXT&gt;(&amp;error_local);</div><div class="line"><a name="l06527"></a><span class="lineno"> 6527</span>&#160;        <span class="keywordflow">if</span>(error_local!=CL_SUCCESS) {</div><div class="line"><a name="l06528"></a><span class="lineno"> 6528</span>&#160;            detail::errHandler(error_local, __LINK_PROGRAM_ERR);</div><div class="line"><a name="l06529"></a><span class="lineno"> 6529</span>&#160;        }</div><div class="line"><a name="l06530"></a><span class="lineno"> 6530</span>&#160;    }</div><div class="line"><a name="l06531"></a><span class="lineno"> 6531</span>&#160;    cl_program prog = ::clLinkProgram(</div><div class="line"><a name="l06532"></a><span class="lineno"> 6532</span>&#160;        ctx(),</div><div class="line"><a name="l06533"></a><span class="lineno"> 6533</span>&#160;        0,</div><div class="line"><a name="l06534"></a><span class="lineno"> 6534</span>&#160;        NULL,</div><div class="line"><a name="l06535"></a><span class="lineno"> 6535</span>&#160;        options,</div><div class="line"><a name="l06536"></a><span class="lineno"> 6536</span>&#160;        (cl_uint)inputPrograms.size(),</div><div class="line"><a name="l06537"></a><span class="lineno"> 6537</span>&#160;        programs.data(),</div><div class="line"><a name="l06538"></a><span class="lineno"> 6538</span>&#160;        notifyFptr,</div><div class="line"><a name="l06539"></a><span class="lineno"> 6539</span>&#160;        data,</div><div class="line"><a name="l06540"></a><span class="lineno"> 6540</span>&#160;        &amp;error_local);</div><div class="line"><a name="l06541"></a><span class="lineno"> 6541</span>&#160;</div><div class="line"><a name="l06542"></a><span class="lineno"> 6542</span>&#160;    detail::errHandler(error_local,__COMPILE_PROGRAM_ERR);</div><div class="line"><a name="l06543"></a><span class="lineno"> 6543</span>&#160;    <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06544"></a><span class="lineno"> 6544</span>&#160;        *err = error_local;</div><div class="line"><a name="l06545"></a><span class="lineno"> 6545</span>&#160;    }</div><div class="line"><a name="l06546"></a><span class="lineno"> 6546</span>&#160;</div><div class="line"><a name="l06547"></a><span class="lineno"> 6547</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classcl_1_1_program.html">Program</a>(prog, <span class="keyword">false</span>);</div><div class="line"><a name="l06548"></a><span class="lineno"> 6548</span>&#160;}</div><div class="line"><a name="l06549"></a><span class="lineno"> 6549</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l06550"></a><span class="lineno"> 6550</span>&#160;</div><div class="line"><a name="l06551"></a><span class="lineno"> 6551</span>&#160;<span class="comment">// Template specialization for CL_PROGRAM_BINARIES</span></div><div class="line"><a name="l06552"></a><span class="lineno"> 6552</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l06553"></a><span class="lineno"> 6553</span>&#160;<span class="keyword">inline</span> cl_int cl::Program::getInfo(cl_program_info name, vector&lt;vector&lt;unsigned char&gt;&gt;* param)<span class="keyword"> const</span></div><div class="line"><a name="l06554"></a><span class="lineno"> 6554</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l06555"></a><span class="lineno"> 6555</span>&#160;    <span class="keywordflow">if</span> (name != CL_PROGRAM_BINARIES) {</div><div class="line"><a name="l06556"></a><span class="lineno"> 6556</span>&#160;        <span class="keywordflow">return</span> CL_INVALID_VALUE;</div><div class="line"><a name="l06557"></a><span class="lineno"> 6557</span>&#160;    }</div><div class="line"><a name="l06558"></a><span class="lineno"> 6558</span>&#160;    <span class="keywordflow">if</span> (param) {</div><div class="line"><a name="l06559"></a><span class="lineno"> 6559</span>&#160;        <span class="comment">// Resize the parameter array appropriately for each allocation</span></div><div class="line"><a name="l06560"></a><span class="lineno"> 6560</span>&#160;        <span class="comment">// and pass down to the helper</span></div><div class="line"><a name="l06561"></a><span class="lineno"> 6561</span>&#160;</div><div class="line"><a name="l06562"></a><span class="lineno"> 6562</span>&#160;        vector&lt;size_type&gt; sizes = getInfo&lt;CL_PROGRAM_BINARY_SIZES&gt;();</div><div class="line"><a name="l06563"></a><span class="lineno"> 6563</span>&#160;        size_type numBinaries = sizes.size();</div><div class="line"><a name="l06564"></a><span class="lineno"> 6564</span>&#160;</div><div class="line"><a name="l06565"></a><span class="lineno"> 6565</span>&#160;        <span class="comment">// Resize the parameter array and constituent arrays</span></div><div class="line"><a name="l06566"></a><span class="lineno"> 6566</span>&#160;        param-&gt;resize(numBinaries);</div><div class="line"><a name="l06567"></a><span class="lineno"> 6567</span>&#160;        <span class="keywordflow">for</span> (size_type i = 0; i &lt; numBinaries; ++i) {</div><div class="line"><a name="l06568"></a><span class="lineno"> 6568</span>&#160;            (*param)[i].resize(sizes[i]);</div><div class="line"><a name="l06569"></a><span class="lineno"> 6569</span>&#160;        }</div><div class="line"><a name="l06570"></a><span class="lineno"> 6570</span>&#160;</div><div class="line"><a name="l06571"></a><span class="lineno"> 6571</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l06572"></a><span class="lineno"> 6572</span>&#160;            detail::getInfo(&amp;::clGetProgramInfo, object_, name, param),</div><div class="line"><a name="l06573"></a><span class="lineno"> 6573</span>&#160;            __GET_PROGRAM_INFO_ERR);</div><div class="line"><a name="l06574"></a><span class="lineno"> 6574</span>&#160;    }</div><div class="line"><a name="l06575"></a><span class="lineno"> 6575</span>&#160;</div><div class="line"><a name="l06576"></a><span class="lineno"> 6576</span>&#160;    <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l06577"></a><span class="lineno"> 6577</span>&#160;}</div><div class="line"><a name="l06578"></a><span class="lineno"> 6578</span>&#160;</div><div class="line"><a name="l06579"></a><span class="lineno"> 6579</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l06580"></a><span class="lineno"> 6580</span>&#160;<span class="keyword">inline</span> vector&lt;vector&lt;unsigned char&gt;&gt; cl::Program::getInfo&lt;CL_PROGRAM_BINARIES&gt;(cl_int* err) <span class="keyword">const</span></div><div class="line"><a name="l06581"></a><span class="lineno"> 6581</span>&#160;{</div><div class="line"><a name="l06582"></a><span class="lineno"> 6582</span>&#160;    vector&lt;vector&lt;unsigned char&gt;&gt; binariesVectors;</div><div class="line"><a name="l06583"></a><span class="lineno"> 6583</span>&#160;</div><div class="line"><a name="l06584"></a><span class="lineno"> 6584</span>&#160;    cl_int result = getInfo(CL_PROGRAM_BINARIES, &amp;binariesVectors);</div><div class="line"><a name="l06585"></a><span class="lineno"> 6585</span>&#160;    <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06586"></a><span class="lineno"> 6586</span>&#160;        *err = result;</div><div class="line"><a name="l06587"></a><span class="lineno"> 6587</span>&#160;    }</div><div class="line"><a name="l06588"></a><span class="lineno"> 6588</span>&#160;    <span class="keywordflow">return</span> binariesVectors;</div><div class="line"><a name="l06589"></a><span class="lineno"> 6589</span>&#160;}</div><div class="line"><a name="l06590"></a><span class="lineno"> 6590</span>&#160;</div><div class="line"><a name="l06591"></a><span class="lineno"> 6591</span>&#160;<span class="keyword">inline</span> <a class="code" href="classcl_1_1_kernel.html#a69b2fc97f80d90a23927a74395d09ec9">Kernel::Kernel</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_program.html">Program</a>&amp; program, <span class="keyword">const</span> <span class="keywordtype">char</span>* name, cl_int* err)</div><div class="line"><a name="l06592"></a><span class="lineno"> 6592</span>&#160;{</div><div class="line"><a name="l06593"></a><span class="lineno"> 6593</span>&#160;    cl_int error;</div><div class="line"><a name="l06594"></a><span class="lineno"> 6594</span>&#160;</div><div class="line"><a name="l06595"></a><span class="lineno"> 6595</span>&#160;    object_ = ::clCreateKernel(program(), name, &amp;error);</div><div class="line"><a name="l06596"></a><span class="lineno"> 6596</span>&#160;    detail::errHandler(error, __CREATE_KERNEL_ERR);</div><div class="line"><a name="l06597"></a><span class="lineno"> 6597</span>&#160;</div><div class="line"><a name="l06598"></a><span class="lineno"> 6598</span>&#160;    <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06599"></a><span class="lineno"> 6599</span>&#160;        *err = error;</div><div class="line"><a name="l06600"></a><span class="lineno"> 6600</span>&#160;    }</div><div class="line"><a name="l06601"></a><span class="lineno"> 6601</span>&#160;</div><div class="line"><a name="l06602"></a><span class="lineno"> 6602</span>&#160;}</div><div class="line"><a name="l06603"></a><span class="lineno"> 6603</span>&#160;</div><div class="line"><a name="l06604"></a><span class="lineno"> 6604</span>&#160;<span class="keyword">enum class</span> QueueProperties : cl_command_queue_properties</div><div class="line"><a name="l06605"></a><span class="lineno"> 6605</span>&#160;{</div><div class="line"><a name="l06606"></a><span class="lineno"> 6606</span>&#160;    None = 0,</div><div class="line"><a name="l06607"></a><span class="lineno"> 6607</span>&#160;    Profiling = CL_QUEUE_PROFILING_ENABLE,</div><div class="line"><a name="l06608"></a><span class="lineno"> 6608</span>&#160;    OutOfOrder = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE,</div><div class="line"><a name="l06609"></a><span class="lineno"> 6609</span>&#160;};</div><div class="line"><a name="l06610"></a><span class="lineno"> 6610</span>&#160;</div><div class="line"><a name="l06611"></a><span class="lineno"> 6611</span>&#160;<span class="keyword">inline</span> QueueProperties operator|(QueueProperties lhs, QueueProperties rhs)</div><div class="line"><a name="l06612"></a><span class="lineno"> 6612</span>&#160;{</div><div class="line"><a name="l06613"></a><span class="lineno"> 6613</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>QueueProperties<span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>cl_command_queue_properties<span class="keyword">&gt;</span>(lhs) | static_cast&lt;cl_command_queue_properties&gt;(rhs));</div><div class="line"><a name="l06614"></a><span class="lineno"> 6614</span>&#160;}</div><div class="line"><a name="l06615"></a><span class="lineno"> 6615</span>&#160;</div><div class="line"><a name="l06619"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html"> 6619</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper</a>&lt;cl_command_queue&gt;</div><div class="line"><a name="l06620"></a><span class="lineno"> 6620</span>&#160;{</div><div class="line"><a name="l06621"></a><span class="lineno"> 6621</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l06622"></a><span class="lineno"> 6622</span>&#160;    <span class="keyword">static</span> std::once_flag default_initialized_;</div><div class="line"><a name="l06623"></a><span class="lineno"> 6623</span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> default_;</div><div class="line"><a name="l06624"></a><span class="lineno"> 6624</span>&#160;    <span class="keyword">static</span> cl_int default_error_;</div><div class="line"><a name="l06625"></a><span class="lineno"> 6625</span>&#160;</div><div class="line"><a name="l06631"></a><span class="lineno"> 6631</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> makeDefault()</div><div class="line"><a name="l06632"></a><span class="lineno"> 6632</span>&#160;    {</div><div class="line"><a name="l06633"></a><span class="lineno"> 6633</span>&#160;        <span class="comment">/* We don&#39;t want to throw an error from this function, so we have to</span></div><div class="line"><a name="l06634"></a><span class="lineno"> 6634</span>&#160;<span class="comment">         * catch and set the error flag.</span></div><div class="line"><a name="l06635"></a><span class="lineno"> 6635</span>&#160;<span class="comment">         */</span></div><div class="line"><a name="l06636"></a><span class="lineno"> 6636</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l06637"></a><span class="lineno"> 6637</span>&#160;        <span class="keywordflow">try</span></div><div class="line"><a name="l06638"></a><span class="lineno"> 6638</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l06639"></a><span class="lineno"> 6639</span>&#160;        {</div><div class="line"><a name="l06640"></a><span class="lineno"> 6640</span>&#160;            <span class="keywordtype">int</span> error;</div><div class="line"><a name="l06641"></a><span class="lineno"> 6641</span>&#160;            <a class="code" href="classcl_1_1_context.html">Context</a> context = <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">Context::getDefault</a>(&amp;error);</div><div class="line"><a name="l06642"></a><span class="lineno"> 6642</span>&#160;</div><div class="line"><a name="l06643"></a><span class="lineno"> 6643</span>&#160;            <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l06644"></a><span class="lineno"> 6644</span>&#160;                default_error_ = error;</div><div class="line"><a name="l06645"></a><span class="lineno"> 6645</span>&#160;            }</div><div class="line"><a name="l06646"></a><span class="lineno"> 6646</span>&#160;            <span class="keywordflow">else</span> {</div><div class="line"><a name="l06647"></a><span class="lineno"> 6647</span>&#160;                <a class="code" href="classcl_1_1_device.html">Device</a> device = <a class="code" href="classcl_1_1_device.html#a7428cf3cdccc824c414730ed65e40a0d">Device::getDefault</a>();</div><div class="line"><a name="l06648"></a><span class="lineno"> 6648</span>&#160;                default_ = <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a>(context, device, 0, &amp;default_error_);</div><div class="line"><a name="l06649"></a><span class="lineno"> 6649</span>&#160;            }</div><div class="line"><a name="l06650"></a><span class="lineno"> 6650</span>&#160;        }</div><div class="line"><a name="l06651"></a><span class="lineno"> 6651</span>&#160;<span class="preprocessor">#if defined(CL_HPP_ENABLE_EXCEPTIONS)</span></div><div class="line"><a name="l06652"></a><span class="lineno"> 6652</span>&#160;        <span class="keywordflow">catch</span> (cl::Error &amp;e) {</div><div class="line"><a name="l06653"></a><span class="lineno"> 6653</span>&#160;            default_error_ = e.err();</div><div class="line"><a name="l06654"></a><span class="lineno"> 6654</span>&#160;        }</div><div class="line"><a name="l06655"></a><span class="lineno"> 6655</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l06656"></a><span class="lineno"> 6656</span>&#160;    }</div><div class="line"><a name="l06657"></a><span class="lineno"> 6657</span>&#160;</div><div class="line"><a name="l06663"></a><span class="lineno"> 6663</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> makeDefaultProvided(<span class="keyword">const</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;c) {</div><div class="line"><a name="l06664"></a><span class="lineno"> 6664</span>&#160;        default_ = c;</div><div class="line"><a name="l06665"></a><span class="lineno"> 6665</span>&#160;    }</div><div class="line"><a name="l06666"></a><span class="lineno"> 6666</span>&#160;</div><div class="line"><a name="l06667"></a><span class="lineno"> 6667</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l06668"></a><span class="lineno"> 6668</span>&#160;<span class="preprocessor">#ifdef CL_HPP_UNIT_TEST_ENABLE</span></div><div class="line"><a name="l06669"></a><span class="lineno"> 6669</span>&#160;</div><div class="line"><a name="l06675"></a><span class="lineno"> 6675</span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> unitTestClearDefault() {</div><div class="line"><a name="l06676"></a><span class="lineno"> 6676</span>&#160;        default_ = <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a>();</div><div class="line"><a name="l06677"></a><span class="lineno"> 6677</span>&#160;    }</div><div class="line"><a name="l06678"></a><span class="lineno"> 6678</span>&#160;<span class="preprocessor">#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE</span></div><div class="line"><a name="l06679"></a><span class="lineno"> 6679</span>&#160;        </div><div class="line"><a name="l06680"></a><span class="lineno"> 6680</span>&#160;</div><div class="line"><a name="l06685"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a8462de408ebfaf6332429a92b7938490"> 6685</a></span>&#160;   <a class="code" href="classcl_1_1_command_queue.html#a8462de408ebfaf6332429a92b7938490">CommandQueue</a>(</div><div class="line"><a name="l06686"></a><span class="lineno"> 6686</span>&#160;        cl_command_queue_properties properties,</div><div class="line"><a name="l06687"></a><span class="lineno"> 6687</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l06688"></a><span class="lineno"> 6688</span>&#160;    {</div><div class="line"><a name="l06689"></a><span class="lineno"> 6689</span>&#160;        cl_int error;</div><div class="line"><a name="l06690"></a><span class="lineno"> 6690</span>&#160;</div><div class="line"><a name="l06691"></a><span class="lineno"> 6691</span>&#160;        <a class="code" href="classcl_1_1_context.html">Context</a> context = <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">Context::getDefault</a>(&amp;error);</div><div class="line"><a name="l06692"></a><span class="lineno"> 6692</span>&#160;        detail::errHandler(error, __CREATE_CONTEXT_ERR);</div><div class="line"><a name="l06693"></a><span class="lineno"> 6693</span>&#160;</div><div class="line"><a name="l06694"></a><span class="lineno"> 6694</span>&#160;        <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l06695"></a><span class="lineno"> 6695</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06696"></a><span class="lineno"> 6696</span>&#160;                *err = error;</div><div class="line"><a name="l06697"></a><span class="lineno"> 6697</span>&#160;            }</div><div class="line"><a name="l06698"></a><span class="lineno"> 6698</span>&#160;        }</div><div class="line"><a name="l06699"></a><span class="lineno"> 6699</span>&#160;        <span class="keywordflow">else</span> {</div><div class="line"><a name="l06700"></a><span class="lineno"> 6700</span>&#160;            <a class="code" href="classcl_1_1_device.html">Device</a> device = context.<a class="code" href="classcl_1_1_context.html#a979d15f9228089af2a657a523b1186e8">getInfo</a>&lt;CL_CONTEXT_DEVICES&gt;()[0];</div><div class="line"><a name="l06701"></a><span class="lineno"> 6701</span>&#160;            <span class="keywordtype">bool</span> useWithProperties;</div><div class="line"><a name="l06702"></a><span class="lineno"> 6702</span>&#160;</div><div class="line"><a name="l06703"></a><span class="lineno"> 6703</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06704"></a><span class="lineno"> 6704</span>&#160;            <span class="comment">// Run-time decision based on the actual platform</span></div><div class="line"><a name="l06705"></a><span class="lineno"> 6705</span>&#160;            {</div><div class="line"><a name="l06706"></a><span class="lineno"> 6706</span>&#160;                cl_uint version = detail::getContextPlatformVersion(context());</div><div class="line"><a name="l06707"></a><span class="lineno"> 6707</span>&#160;                useWithProperties = (version &gt;= 0x20000); <span class="comment">// OpenCL 2.0 or above</span></div><div class="line"><a name="l06708"></a><span class="lineno"> 6708</span>&#160;            }</div><div class="line"><a name="l06709"></a><span class="lineno"> 6709</span>&#160;<span class="preprocessor">#elif CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06710"></a><span class="lineno"> 6710</span>&#160;            useWithProperties = <span class="keyword">true</span>;</div><div class="line"><a name="l06711"></a><span class="lineno"> 6711</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l06712"></a><span class="lineno"> 6712</span>&#160;            useWithProperties = <span class="keyword">false</span>;</div><div class="line"><a name="l06713"></a><span class="lineno"> 6713</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l06714"></a><span class="lineno"> 6714</span>&#160;</div><div class="line"><a name="l06715"></a><span class="lineno"> 6715</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06716"></a><span class="lineno"> 6716</span>&#160;            <span class="keywordflow">if</span> (useWithProperties) {</div><div class="line"><a name="l06717"></a><span class="lineno"> 6717</span>&#160;                cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l06718"></a><span class="lineno"> 6718</span>&#160;                    CL_QUEUE_PROPERTIES, properties, 0 };</div><div class="line"><a name="l06719"></a><span class="lineno"> 6719</span>&#160;                <span class="keywordflow">if</span> ((properties &amp; CL_QUEUE_ON_DEVICE) == 0) {</div><div class="line"><a name="l06720"></a><span class="lineno"> 6720</span>&#160;                    object_ = ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l06721"></a><span class="lineno"> 6721</span>&#160;                        context(), device(), queue_properties, &amp;error);</div><div class="line"><a name="l06722"></a><span class="lineno"> 6722</span>&#160;                }</div><div class="line"><a name="l06723"></a><span class="lineno"> 6723</span>&#160;                <span class="keywordflow">else</span> {</div><div class="line"><a name="l06724"></a><span class="lineno"> 6724</span>&#160;                    error = CL_INVALID_QUEUE_PROPERTIES;</div><div class="line"><a name="l06725"></a><span class="lineno"> 6725</span>&#160;                }</div><div class="line"><a name="l06726"></a><span class="lineno"> 6726</span>&#160;</div><div class="line"><a name="l06727"></a><span class="lineno"> 6727</span>&#160;                detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l06728"></a><span class="lineno"> 6728</span>&#160;                <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06729"></a><span class="lineno"> 6729</span>&#160;                    *err = error;</div><div class="line"><a name="l06730"></a><span class="lineno"> 6730</span>&#160;                }</div><div class="line"><a name="l06731"></a><span class="lineno"> 6731</span>&#160;            }</div><div class="line"><a name="l06732"></a><span class="lineno"> 6732</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06733"></a><span class="lineno"> 6733</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06734"></a><span class="lineno"> 6734</span>&#160;            <span class="keywordflow">if</span> (!useWithProperties) {</div><div class="line"><a name="l06735"></a><span class="lineno"> 6735</span>&#160;                object_ = ::clCreateCommandQueue(</div><div class="line"><a name="l06736"></a><span class="lineno"> 6736</span>&#160;                    context(), device(), properties, &amp;error);</div><div class="line"><a name="l06737"></a><span class="lineno"> 6737</span>&#160;</div><div class="line"><a name="l06738"></a><span class="lineno"> 6738</span>&#160;                detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR);</div><div class="line"><a name="l06739"></a><span class="lineno"> 6739</span>&#160;                <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06740"></a><span class="lineno"> 6740</span>&#160;                    *err = error;</div><div class="line"><a name="l06741"></a><span class="lineno"> 6741</span>&#160;                }</div><div class="line"><a name="l06742"></a><span class="lineno"> 6742</span>&#160;            }</div><div class="line"><a name="l06743"></a><span class="lineno"> 6743</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06744"></a><span class="lineno"> 6744</span>&#160;        }</div><div class="line"><a name="l06745"></a><span class="lineno"> 6745</span>&#160;    }</div><div class="line"><a name="l06746"></a><span class="lineno"> 6746</span>&#160;</div><div class="line"><a name="l06751"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a05ae8e9e44e9b28fc755937490535550"> 6751</a></span>&#160;   <a class="code" href="classcl_1_1_command_queue.html#a05ae8e9e44e9b28fc755937490535550">CommandQueue</a>(</div><div class="line"><a name="l06752"></a><span class="lineno"> 6752</span>&#160;       QueueProperties properties,</div><div class="line"><a name="l06753"></a><span class="lineno"> 6753</span>&#160;       cl_int* err = NULL)</div><div class="line"><a name="l06754"></a><span class="lineno"> 6754</span>&#160;   {</div><div class="line"><a name="l06755"></a><span class="lineno"> 6755</span>&#160;       cl_int error;</div><div class="line"><a name="l06756"></a><span class="lineno"> 6756</span>&#160;</div><div class="line"><a name="l06757"></a><span class="lineno"> 6757</span>&#160;       <a class="code" href="classcl_1_1_context.html">Context</a> context = <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">Context::getDefault</a>(&amp;error);</div><div class="line"><a name="l06758"></a><span class="lineno"> 6758</span>&#160;       detail::errHandler(error, __CREATE_CONTEXT_ERR);</div><div class="line"><a name="l06759"></a><span class="lineno"> 6759</span>&#160;</div><div class="line"><a name="l06760"></a><span class="lineno"> 6760</span>&#160;       <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l06761"></a><span class="lineno"> 6761</span>&#160;           <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06762"></a><span class="lineno"> 6762</span>&#160;               *err = error;</div><div class="line"><a name="l06763"></a><span class="lineno"> 6763</span>&#160;           }</div><div class="line"><a name="l06764"></a><span class="lineno"> 6764</span>&#160;       }</div><div class="line"><a name="l06765"></a><span class="lineno"> 6765</span>&#160;       <span class="keywordflow">else</span> {</div><div class="line"><a name="l06766"></a><span class="lineno"> 6766</span>&#160;           <a class="code" href="classcl_1_1_device.html">Device</a> device = context.<a class="code" href="classcl_1_1_context.html#a979d15f9228089af2a657a523b1186e8">getInfo</a>&lt;CL_CONTEXT_DEVICES&gt;()[0];</div><div class="line"><a name="l06767"></a><span class="lineno"> 6767</span>&#160;           <span class="keywordtype">bool</span> useWithProperties;</div><div class="line"><a name="l06768"></a><span class="lineno"> 6768</span>&#160;</div><div class="line"><a name="l06769"></a><span class="lineno"> 6769</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06770"></a><span class="lineno"> 6770</span>&#160;           <span class="comment">// Run-time decision based on the actual platform</span></div><div class="line"><a name="l06771"></a><span class="lineno"> 6771</span>&#160;           {</div><div class="line"><a name="l06772"></a><span class="lineno"> 6772</span>&#160;               cl_uint version = detail::getContextPlatformVersion(context());</div><div class="line"><a name="l06773"></a><span class="lineno"> 6773</span>&#160;               useWithProperties = (version &gt;= 0x20000); <span class="comment">// OpenCL 2.0 or above</span></div><div class="line"><a name="l06774"></a><span class="lineno"> 6774</span>&#160;           }</div><div class="line"><a name="l06775"></a><span class="lineno"> 6775</span>&#160;<span class="preprocessor">#elif CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06776"></a><span class="lineno"> 6776</span>&#160;           useWithProperties = <span class="keyword">true</span>;</div><div class="line"><a name="l06777"></a><span class="lineno"> 6777</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l06778"></a><span class="lineno"> 6778</span>&#160;           useWithProperties = <span class="keyword">false</span>;</div><div class="line"><a name="l06779"></a><span class="lineno"> 6779</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l06780"></a><span class="lineno"> 6780</span>&#160;</div><div class="line"><a name="l06781"></a><span class="lineno"> 6781</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06782"></a><span class="lineno"> 6782</span>&#160;           <span class="keywordflow">if</span> (useWithProperties) {</div><div class="line"><a name="l06783"></a><span class="lineno"> 6783</span>&#160;               cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l06784"></a><span class="lineno"> 6784</span>&#160;                   CL_QUEUE_PROPERTIES, <span class="keyword">static_cast&lt;</span>cl_queue_properties<span class="keyword">&gt;</span>(properties), 0 };</div><div class="line"><a name="l06785"></a><span class="lineno"> 6785</span>&#160;</div><div class="line"><a name="l06786"></a><span class="lineno"> 6786</span>&#160;               object_ = ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l06787"></a><span class="lineno"> 6787</span>&#160;                   context(), device(), queue_properties, &amp;error);</div><div class="line"><a name="l06788"></a><span class="lineno"> 6788</span>&#160;</div><div class="line"><a name="l06789"></a><span class="lineno"> 6789</span>&#160;               detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l06790"></a><span class="lineno"> 6790</span>&#160;               <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06791"></a><span class="lineno"> 6791</span>&#160;                   *err = error;</div><div class="line"><a name="l06792"></a><span class="lineno"> 6792</span>&#160;               }</div><div class="line"><a name="l06793"></a><span class="lineno"> 6793</span>&#160;           }</div><div class="line"><a name="l06794"></a><span class="lineno"> 6794</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06795"></a><span class="lineno"> 6795</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06796"></a><span class="lineno"> 6796</span>&#160;           <span class="keywordflow">if</span> (!useWithProperties) {</div><div class="line"><a name="l06797"></a><span class="lineno"> 6797</span>&#160;               object_ = ::clCreateCommandQueue(</div><div class="line"><a name="l06798"></a><span class="lineno"> 6798</span>&#160;                   context(), device(), static_cast&lt;cl_command_queue_properties&gt;(properties), &amp;error);</div><div class="line"><a name="l06799"></a><span class="lineno"> 6799</span>&#160;</div><div class="line"><a name="l06800"></a><span class="lineno"> 6800</span>&#160;               detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR);</div><div class="line"><a name="l06801"></a><span class="lineno"> 6801</span>&#160;               <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06802"></a><span class="lineno"> 6802</span>&#160;                   *err = error;</div><div class="line"><a name="l06803"></a><span class="lineno"> 6803</span>&#160;               }</div><div class="line"><a name="l06804"></a><span class="lineno"> 6804</span>&#160;           }</div><div class="line"><a name="l06805"></a><span class="lineno"> 6805</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06806"></a><span class="lineno"> 6806</span>&#160;</div><div class="line"><a name="l06807"></a><span class="lineno"> 6807</span>&#160;       }</div><div class="line"><a name="l06808"></a><span class="lineno"> 6808</span>&#160;   }</div><div class="line"><a name="l06809"></a><span class="lineno"> 6809</span>&#160;</div><div class="line"><a name="l06814"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#adcb116a4e1a53417dad3d3850c33d42f"> 6814</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_command_queue.html#adcb116a4e1a53417dad3d3850c33d42f">CommandQueue</a>(</div><div class="line"><a name="l06815"></a><span class="lineno"> 6815</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l06816"></a><span class="lineno"> 6816</span>&#160;        cl_command_queue_properties properties = 0,</div><div class="line"><a name="l06817"></a><span class="lineno"> 6817</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l06818"></a><span class="lineno"> 6818</span>&#160;    {</div><div class="line"><a name="l06819"></a><span class="lineno"> 6819</span>&#160;        cl_int error;</div><div class="line"><a name="l06820"></a><span class="lineno"> 6820</span>&#160;        <span class="keywordtype">bool</span> useWithProperties;</div><div class="line"><a name="l06821"></a><span class="lineno"> 6821</span>&#160;        vector&lt;cl::Device&gt; devices;</div><div class="line"><a name="l06822"></a><span class="lineno"> 6822</span>&#160;        error = context.<a class="code" href="classcl_1_1_context.html#a979d15f9228089af2a657a523b1186e8">getInfo</a>(CL_CONTEXT_DEVICES, &amp;devices);</div><div class="line"><a name="l06823"></a><span class="lineno"> 6823</span>&#160;</div><div class="line"><a name="l06824"></a><span class="lineno"> 6824</span>&#160;        detail::errHandler(error, __CREATE_CONTEXT_ERR);</div><div class="line"><a name="l06825"></a><span class="lineno"> 6825</span>&#160;</div><div class="line"><a name="l06826"></a><span class="lineno"> 6826</span>&#160;        <span class="keywordflow">if</span> (error != CL_SUCCESS)</div><div class="line"><a name="l06827"></a><span class="lineno"> 6827</span>&#160;        {</div><div class="line"><a name="l06828"></a><span class="lineno"> 6828</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06829"></a><span class="lineno"> 6829</span>&#160;                *err = error;</div><div class="line"><a name="l06830"></a><span class="lineno"> 6830</span>&#160;            }</div><div class="line"><a name="l06831"></a><span class="lineno"> 6831</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l06832"></a><span class="lineno"> 6832</span>&#160;        }</div><div class="line"><a name="l06833"></a><span class="lineno"> 6833</span>&#160;</div><div class="line"><a name="l06834"></a><span class="lineno"> 6834</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06835"></a><span class="lineno"> 6835</span>&#160;        <span class="comment">// Run-time decision based on the actual platform</span></div><div class="line"><a name="l06836"></a><span class="lineno"> 6836</span>&#160;        {</div><div class="line"><a name="l06837"></a><span class="lineno"> 6837</span>&#160;            cl_uint version = detail::getContextPlatformVersion(context());</div><div class="line"><a name="l06838"></a><span class="lineno"> 6838</span>&#160;            useWithProperties = (version &gt;= 0x20000); <span class="comment">// OpenCL 2.0 or above</span></div><div class="line"><a name="l06839"></a><span class="lineno"> 6839</span>&#160;        }</div><div class="line"><a name="l06840"></a><span class="lineno"> 6840</span>&#160;<span class="preprocessor">#elif CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06841"></a><span class="lineno"> 6841</span>&#160;        useWithProperties = <span class="keyword">true</span>;</div><div class="line"><a name="l06842"></a><span class="lineno"> 6842</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l06843"></a><span class="lineno"> 6843</span>&#160;        useWithProperties = <span class="keyword">false</span>;</div><div class="line"><a name="l06844"></a><span class="lineno"> 6844</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l06845"></a><span class="lineno"> 6845</span>&#160;</div><div class="line"><a name="l06846"></a><span class="lineno"> 6846</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06847"></a><span class="lineno"> 6847</span>&#160;        <span class="keywordflow">if</span> (useWithProperties) {</div><div class="line"><a name="l06848"></a><span class="lineno"> 6848</span>&#160;            cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l06849"></a><span class="lineno"> 6849</span>&#160;                CL_QUEUE_PROPERTIES, properties, 0 };</div><div class="line"><a name="l06850"></a><span class="lineno"> 6850</span>&#160;            <span class="keywordflow">if</span> ((properties &amp; CL_QUEUE_ON_DEVICE) == 0) {</div><div class="line"><a name="l06851"></a><span class="lineno"> 6851</span>&#160;                object_ = ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l06852"></a><span class="lineno"> 6852</span>&#160;                    context(), devices[0](), queue_properties, &amp;error);</div><div class="line"><a name="l06853"></a><span class="lineno"> 6853</span>&#160;            }</div><div class="line"><a name="l06854"></a><span class="lineno"> 6854</span>&#160;            <span class="keywordflow">else</span> {</div><div class="line"><a name="l06855"></a><span class="lineno"> 6855</span>&#160;                error = CL_INVALID_QUEUE_PROPERTIES;</div><div class="line"><a name="l06856"></a><span class="lineno"> 6856</span>&#160;            }</div><div class="line"><a name="l06857"></a><span class="lineno"> 6857</span>&#160;</div><div class="line"><a name="l06858"></a><span class="lineno"> 6858</span>&#160;            detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l06859"></a><span class="lineno"> 6859</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06860"></a><span class="lineno"> 6860</span>&#160;                *err = error;</div><div class="line"><a name="l06861"></a><span class="lineno"> 6861</span>&#160;            }</div><div class="line"><a name="l06862"></a><span class="lineno"> 6862</span>&#160;        }</div><div class="line"><a name="l06863"></a><span class="lineno"> 6863</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06864"></a><span class="lineno"> 6864</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06865"></a><span class="lineno"> 6865</span>&#160;        <span class="keywordflow">if</span> (!useWithProperties) {</div><div class="line"><a name="l06866"></a><span class="lineno"> 6866</span>&#160;            object_ = ::clCreateCommandQueue(</div><div class="line"><a name="l06867"></a><span class="lineno"> 6867</span>&#160;                context(), devices[0](), properties, &amp;error);</div><div class="line"><a name="l06868"></a><span class="lineno"> 6868</span>&#160;</div><div class="line"><a name="l06869"></a><span class="lineno"> 6869</span>&#160;            detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR);</div><div class="line"><a name="l06870"></a><span class="lineno"> 6870</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06871"></a><span class="lineno"> 6871</span>&#160;                *err = error;</div><div class="line"><a name="l06872"></a><span class="lineno"> 6872</span>&#160;            }</div><div class="line"><a name="l06873"></a><span class="lineno"> 6873</span>&#160;        }</div><div class="line"><a name="l06874"></a><span class="lineno"> 6874</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06875"></a><span class="lineno"> 6875</span>&#160;    }</div><div class="line"><a name="l06876"></a><span class="lineno"> 6876</span>&#160;</div><div class="line"><a name="l06881"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a975c3dce399cb77a5c6b0e294e4778fe"> 6881</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_command_queue.html#a975c3dce399cb77a5c6b0e294e4778fe">CommandQueue</a>(</div><div class="line"><a name="l06882"></a><span class="lineno"> 6882</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l06883"></a><span class="lineno"> 6883</span>&#160;        QueueProperties properties,</div><div class="line"><a name="l06884"></a><span class="lineno"> 6884</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l06885"></a><span class="lineno"> 6885</span>&#160;    {</div><div class="line"><a name="l06886"></a><span class="lineno"> 6886</span>&#160;        cl_int error;</div><div class="line"><a name="l06887"></a><span class="lineno"> 6887</span>&#160;        <span class="keywordtype">bool</span> useWithProperties;</div><div class="line"><a name="l06888"></a><span class="lineno"> 6888</span>&#160;        vector&lt;cl::Device&gt; devices;</div><div class="line"><a name="l06889"></a><span class="lineno"> 6889</span>&#160;        error = context.<a class="code" href="classcl_1_1_context.html#a979d15f9228089af2a657a523b1186e8">getInfo</a>(CL_CONTEXT_DEVICES, &amp;devices);</div><div class="line"><a name="l06890"></a><span class="lineno"> 6890</span>&#160;</div><div class="line"><a name="l06891"></a><span class="lineno"> 6891</span>&#160;        detail::errHandler(error, __CREATE_CONTEXT_ERR);</div><div class="line"><a name="l06892"></a><span class="lineno"> 6892</span>&#160;</div><div class="line"><a name="l06893"></a><span class="lineno"> 6893</span>&#160;        <span class="keywordflow">if</span> (error != CL_SUCCESS)</div><div class="line"><a name="l06894"></a><span class="lineno"> 6894</span>&#160;        {</div><div class="line"><a name="l06895"></a><span class="lineno"> 6895</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06896"></a><span class="lineno"> 6896</span>&#160;                *err = error;</div><div class="line"><a name="l06897"></a><span class="lineno"> 6897</span>&#160;            }</div><div class="line"><a name="l06898"></a><span class="lineno"> 6898</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l06899"></a><span class="lineno"> 6899</span>&#160;        }</div><div class="line"><a name="l06900"></a><span class="lineno"> 6900</span>&#160;</div><div class="line"><a name="l06901"></a><span class="lineno"> 6901</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06902"></a><span class="lineno"> 6902</span>&#160;        <span class="comment">// Run-time decision based on the actual platform</span></div><div class="line"><a name="l06903"></a><span class="lineno"> 6903</span>&#160;        {</div><div class="line"><a name="l06904"></a><span class="lineno"> 6904</span>&#160;            cl_uint version = detail::getContextPlatformVersion(context());</div><div class="line"><a name="l06905"></a><span class="lineno"> 6905</span>&#160;            useWithProperties = (version &gt;= 0x20000); <span class="comment">// OpenCL 2.0 or above</span></div><div class="line"><a name="l06906"></a><span class="lineno"> 6906</span>&#160;        }</div><div class="line"><a name="l06907"></a><span class="lineno"> 6907</span>&#160;<span class="preprocessor">#elif CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06908"></a><span class="lineno"> 6908</span>&#160;        useWithProperties = <span class="keyword">true</span>;</div><div class="line"><a name="l06909"></a><span class="lineno"> 6909</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l06910"></a><span class="lineno"> 6910</span>&#160;        useWithProperties = <span class="keyword">false</span>;</div><div class="line"><a name="l06911"></a><span class="lineno"> 6911</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l06912"></a><span class="lineno"> 6912</span>&#160;</div><div class="line"><a name="l06913"></a><span class="lineno"> 6913</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06914"></a><span class="lineno"> 6914</span>&#160;        <span class="keywordflow">if</span> (useWithProperties) {</div><div class="line"><a name="l06915"></a><span class="lineno"> 6915</span>&#160;            cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l06916"></a><span class="lineno"> 6916</span>&#160;                CL_QUEUE_PROPERTIES, <span class="keyword">static_cast&lt;</span>cl_queue_properties<span class="keyword">&gt;</span>(properties), 0 };</div><div class="line"><a name="l06917"></a><span class="lineno"> 6917</span>&#160;            object_ = ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l06918"></a><span class="lineno"> 6918</span>&#160;                context(), devices[0](), queue_properties, &amp;error);</div><div class="line"><a name="l06919"></a><span class="lineno"> 6919</span>&#160;</div><div class="line"><a name="l06920"></a><span class="lineno"> 6920</span>&#160;            detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l06921"></a><span class="lineno"> 6921</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06922"></a><span class="lineno"> 6922</span>&#160;                *err = error;</div><div class="line"><a name="l06923"></a><span class="lineno"> 6923</span>&#160;            }</div><div class="line"><a name="l06924"></a><span class="lineno"> 6924</span>&#160;        }</div><div class="line"><a name="l06925"></a><span class="lineno"> 6925</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06926"></a><span class="lineno"> 6926</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06927"></a><span class="lineno"> 6927</span>&#160;        <span class="keywordflow">if</span> (!useWithProperties) {</div><div class="line"><a name="l06928"></a><span class="lineno"> 6928</span>&#160;            object_ = ::clCreateCommandQueue(</div><div class="line"><a name="l06929"></a><span class="lineno"> 6929</span>&#160;                context(), devices[0](), static_cast&lt;cl_command_queue_properties&gt;(properties), &amp;error);</div><div class="line"><a name="l06930"></a><span class="lineno"> 6930</span>&#160;</div><div class="line"><a name="l06931"></a><span class="lineno"> 6931</span>&#160;            detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR);</div><div class="line"><a name="l06932"></a><span class="lineno"> 6932</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06933"></a><span class="lineno"> 6933</span>&#160;                *err = error;</div><div class="line"><a name="l06934"></a><span class="lineno"> 6934</span>&#160;            }</div><div class="line"><a name="l06935"></a><span class="lineno"> 6935</span>&#160;        }</div><div class="line"><a name="l06936"></a><span class="lineno"> 6936</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06937"></a><span class="lineno"> 6937</span>&#160;    }</div><div class="line"><a name="l06938"></a><span class="lineno"> 6938</span>&#160;</div><div class="line"><a name="l06943"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a887826e515b03224aec87b33ac59f327"> 6943</a></span>&#160;    <a class="code" href="classcl_1_1_command_queue.html#a887826e515b03224aec87b33ac59f327">CommandQueue</a>(</div><div class="line"><a name="l06944"></a><span class="lineno"> 6944</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l06945"></a><span class="lineno"> 6945</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a>&amp; device,</div><div class="line"><a name="l06946"></a><span class="lineno"> 6946</span>&#160;        cl_command_queue_properties properties = 0,</div><div class="line"><a name="l06947"></a><span class="lineno"> 6947</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l06948"></a><span class="lineno"> 6948</span>&#160;    {</div><div class="line"><a name="l06949"></a><span class="lineno"> 6949</span>&#160;        cl_int error;</div><div class="line"><a name="l06950"></a><span class="lineno"> 6950</span>&#160;        <span class="keywordtype">bool</span> useWithProperties;</div><div class="line"><a name="l06951"></a><span class="lineno"> 6951</span>&#160;</div><div class="line"><a name="l06952"></a><span class="lineno"> 6952</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06953"></a><span class="lineno"> 6953</span>&#160;        <span class="comment">// Run-time decision based on the actual platform</span></div><div class="line"><a name="l06954"></a><span class="lineno"> 6954</span>&#160;        {</div><div class="line"><a name="l06955"></a><span class="lineno"> 6955</span>&#160;            cl_uint version = detail::getContextPlatformVersion(context());</div><div class="line"><a name="l06956"></a><span class="lineno"> 6956</span>&#160;            useWithProperties = (version &gt;= 0x20000); <span class="comment">// OpenCL 2.0 or above</span></div><div class="line"><a name="l06957"></a><span class="lineno"> 6957</span>&#160;        }</div><div class="line"><a name="l06958"></a><span class="lineno"> 6958</span>&#160;<span class="preprocessor">#elif CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06959"></a><span class="lineno"> 6959</span>&#160;        useWithProperties = <span class="keyword">true</span>;</div><div class="line"><a name="l06960"></a><span class="lineno"> 6960</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l06961"></a><span class="lineno"> 6961</span>&#160;        useWithProperties = <span class="keyword">false</span>;</div><div class="line"><a name="l06962"></a><span class="lineno"> 6962</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l06963"></a><span class="lineno"> 6963</span>&#160;</div><div class="line"><a name="l06964"></a><span class="lineno"> 6964</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06965"></a><span class="lineno"> 6965</span>&#160;        <span class="keywordflow">if</span> (useWithProperties) {</div><div class="line"><a name="l06966"></a><span class="lineno"> 6966</span>&#160;            cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l06967"></a><span class="lineno"> 6967</span>&#160;                CL_QUEUE_PROPERTIES, properties, 0 };</div><div class="line"><a name="l06968"></a><span class="lineno"> 6968</span>&#160;            object_ = ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l06969"></a><span class="lineno"> 6969</span>&#160;                context(), device(), queue_properties, &amp;error);</div><div class="line"><a name="l06970"></a><span class="lineno"> 6970</span>&#160;</div><div class="line"><a name="l06971"></a><span class="lineno"> 6971</span>&#160;            detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l06972"></a><span class="lineno"> 6972</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06973"></a><span class="lineno"> 6973</span>&#160;                *err = error;</div><div class="line"><a name="l06974"></a><span class="lineno"> 6974</span>&#160;            }</div><div class="line"><a name="l06975"></a><span class="lineno"> 6975</span>&#160;        }</div><div class="line"><a name="l06976"></a><span class="lineno"> 6976</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l06977"></a><span class="lineno"> 6977</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06978"></a><span class="lineno"> 6978</span>&#160;        <span class="keywordflow">if</span> (!useWithProperties) {</div><div class="line"><a name="l06979"></a><span class="lineno"> 6979</span>&#160;            object_ = ::clCreateCommandQueue(</div><div class="line"><a name="l06980"></a><span class="lineno"> 6980</span>&#160;                context(), device(), properties, &amp;error);</div><div class="line"><a name="l06981"></a><span class="lineno"> 6981</span>&#160;</div><div class="line"><a name="l06982"></a><span class="lineno"> 6982</span>&#160;            detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR);</div><div class="line"><a name="l06983"></a><span class="lineno"> 6983</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l06984"></a><span class="lineno"> 6984</span>&#160;                *err = error;</div><div class="line"><a name="l06985"></a><span class="lineno"> 6985</span>&#160;            }</div><div class="line"><a name="l06986"></a><span class="lineno"> 6986</span>&#160;        }</div><div class="line"><a name="l06987"></a><span class="lineno"> 6987</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l06988"></a><span class="lineno"> 6988</span>&#160;    }</div><div class="line"><a name="l06989"></a><span class="lineno"> 6989</span>&#160;</div><div class="line"><a name="l06994"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a8dd467bd94839921b7318cb30f92b5a4"> 6994</a></span>&#160;    <a class="code" href="classcl_1_1_command_queue.html#a8dd467bd94839921b7318cb30f92b5a4">CommandQueue</a>(</div><div class="line"><a name="l06995"></a><span class="lineno"> 6995</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l06996"></a><span class="lineno"> 6996</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a>&amp; device,</div><div class="line"><a name="l06997"></a><span class="lineno"> 6997</span>&#160;        QueueProperties properties,</div><div class="line"><a name="l06998"></a><span class="lineno"> 6998</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l06999"></a><span class="lineno"> 6999</span>&#160;    {</div><div class="line"><a name="l07000"></a><span class="lineno"> 7000</span>&#160;        cl_int error;</div><div class="line"><a name="l07001"></a><span class="lineno"> 7001</span>&#160;        <span class="keywordtype">bool</span> useWithProperties;</div><div class="line"><a name="l07002"></a><span class="lineno"> 7002</span>&#160;</div><div class="line"><a name="l07003"></a><span class="lineno"> 7003</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200 &amp;&amp; CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l07004"></a><span class="lineno"> 7004</span>&#160;        <span class="comment">// Run-time decision based on the actual platform</span></div><div class="line"><a name="l07005"></a><span class="lineno"> 7005</span>&#160;        {</div><div class="line"><a name="l07006"></a><span class="lineno"> 7006</span>&#160;            cl_uint version = detail::getContextPlatformVersion(context());</div><div class="line"><a name="l07007"></a><span class="lineno"> 7007</span>&#160;            useWithProperties = (version &gt;= 0x20000); <span class="comment">// OpenCL 2.0 or above</span></div><div class="line"><a name="l07008"></a><span class="lineno"> 7008</span>&#160;        }</div><div class="line"><a name="l07009"></a><span class="lineno"> 7009</span>&#160;<span class="preprocessor">#elif CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l07010"></a><span class="lineno"> 7010</span>&#160;        useWithProperties = <span class="keyword">true</span>;</div><div class="line"><a name="l07011"></a><span class="lineno"> 7011</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l07012"></a><span class="lineno"> 7012</span>&#160;        useWithProperties = <span class="keyword">false</span>;</div><div class="line"><a name="l07013"></a><span class="lineno"> 7013</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l07014"></a><span class="lineno"> 7014</span>&#160;</div><div class="line"><a name="l07015"></a><span class="lineno"> 7015</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l07016"></a><span class="lineno"> 7016</span>&#160;        <span class="keywordflow">if</span> (useWithProperties) {</div><div class="line"><a name="l07017"></a><span class="lineno"> 7017</span>&#160;            cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l07018"></a><span class="lineno"> 7018</span>&#160;                CL_QUEUE_PROPERTIES, <span class="keyword">static_cast&lt;</span>cl_queue_properties<span class="keyword">&gt;</span>(properties), 0 };</div><div class="line"><a name="l07019"></a><span class="lineno"> 7019</span>&#160;            object_ = ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l07020"></a><span class="lineno"> 7020</span>&#160;                context(), device(), queue_properties, &amp;error);</div><div class="line"><a name="l07021"></a><span class="lineno"> 7021</span>&#160;</div><div class="line"><a name="l07022"></a><span class="lineno"> 7022</span>&#160;            detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l07023"></a><span class="lineno"> 7023</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l07024"></a><span class="lineno"> 7024</span>&#160;                *err = error;</div><div class="line"><a name="l07025"></a><span class="lineno"> 7025</span>&#160;            }</div><div class="line"><a name="l07026"></a><span class="lineno"> 7026</span>&#160;        }</div><div class="line"><a name="l07027"></a><span class="lineno"> 7027</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l07028"></a><span class="lineno"> 7028</span>&#160;<span class="preprocessor">#if CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l07029"></a><span class="lineno"> 7029</span>&#160;        <span class="keywordflow">if</span> (!useWithProperties) {</div><div class="line"><a name="l07030"></a><span class="lineno"> 7030</span>&#160;            object_ = ::clCreateCommandQueue(</div><div class="line"><a name="l07031"></a><span class="lineno"> 7031</span>&#160;                context(), device(), static_cast&lt;cl_command_queue_properties&gt;(properties), &amp;error);</div><div class="line"><a name="l07032"></a><span class="lineno"> 7032</span>&#160;</div><div class="line"><a name="l07033"></a><span class="lineno"> 7033</span>&#160;            detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR);</div><div class="line"><a name="l07034"></a><span class="lineno"> 7034</span>&#160;            <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l07035"></a><span class="lineno"> 7035</span>&#160;                *err = error;</div><div class="line"><a name="l07036"></a><span class="lineno"> 7036</span>&#160;            }</div><div class="line"><a name="l07037"></a><span class="lineno"> 7037</span>&#160;        }</div><div class="line"><a name="l07038"></a><span class="lineno"> 7038</span>&#160;<span class="preprocessor">#endif // CL_HPP_MINIMUM_OPENCL_VERSION &lt; 200</span></div><div class="line"><a name="l07039"></a><span class="lineno"> 7039</span>&#160;    }</div><div class="line"><a name="l07040"></a><span class="lineno"> 7040</span>&#160;</div><div class="line"><a name="l07041"></a><span class="lineno"> 7041</span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> getDefault(cl_int * err = NULL) </div><div class="line"><a name="l07042"></a><span class="lineno"> 7042</span>&#160;    {</div><div class="line"><a name="l07043"></a><span class="lineno"> 7043</span>&#160;        std::call_once(default_initialized_, makeDefault);</div><div class="line"><a name="l07044"></a><span class="lineno"> 7044</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l07045"></a><span class="lineno"> 7045</span>&#160;        detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l07046"></a><span class="lineno"> 7046</span>&#160;<span class="preprocessor">#else // CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l07047"></a><span class="lineno"> 7047</span>&#160;        detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_ERR);</div><div class="line"><a name="l07048"></a><span class="lineno"> 7048</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l07049"></a><span class="lineno"> 7049</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l07050"></a><span class="lineno"> 7050</span>&#160;            *err = default_error_;</div><div class="line"><a name="l07051"></a><span class="lineno"> 7051</span>&#160;        }</div><div class="line"><a name="l07052"></a><span class="lineno"> 7052</span>&#160;        <span class="keywordflow">return</span> default_;</div><div class="line"><a name="l07053"></a><span class="lineno"> 7053</span>&#160;    }</div><div class="line"><a name="l07054"></a><span class="lineno"> 7054</span>&#160;</div><div class="line"><a name="l07062"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a736a138dd72e39056e8a9aa3dec5d132"> 7062</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> <a class="code" href="classcl_1_1_command_queue.html#a736a138dd72e39056e8a9aa3dec5d132">setDefault</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;default_queue)</div><div class="line"><a name="l07063"></a><span class="lineno"> 7063</span>&#160;    {</div><div class="line"><a name="l07064"></a><span class="lineno"> 7064</span>&#160;        std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_queue));</div><div class="line"><a name="l07065"></a><span class="lineno"> 7065</span>&#160;        detail::errHandler(default_error_);</div><div class="line"><a name="l07066"></a><span class="lineno"> 7066</span>&#160;        <span class="keywordflow">return</span> default_;</div><div class="line"><a name="l07067"></a><span class="lineno"> 7067</span>&#160;    }</div><div class="line"><a name="l07068"></a><span class="lineno"> 7068</span>&#160;</div><div class="line"><a name="l07069"></a><span class="lineno"> 7069</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a>() { }</div><div class="line"><a name="l07070"></a><span class="lineno"> 7070</span>&#160;</div><div class="line"><a name="l07071"></a><span class="lineno"> 7071</span>&#160;</div><div class="line"><a name="l07078"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a09be675998c51f36aa7744b47eabebd3"> 7078</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_command_queue.html#a09be675998c51f36aa7744b47eabebd3">CommandQueue</a>(<span class="keyword">const</span> cl_command_queue&amp; commandQueue, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) : </div><div class="line"><a name="l07079"></a><span class="lineno"> 7079</span>&#160;        detail::Wrapper&lt;cl_type&gt;(commandQueue, retainObject) { }</div><div class="line"><a name="l07080"></a><span class="lineno"> 7080</span>&#160;</div><div class="line"><a name="l07081"></a><span class="lineno"> 7081</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a>&amp; operator = (<span class="keyword">const</span> cl_command_queue&amp; rhs)</div><div class="line"><a name="l07082"></a><span class="lineno"> 7082</span>&#160;    {</div><div class="line"><a name="l07083"></a><span class="lineno"> 7083</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(rhs);</div><div class="line"><a name="l07084"></a><span class="lineno"> 7084</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l07085"></a><span class="lineno"> 7085</span>&#160;    }</div><div class="line"><a name="l07086"></a><span class="lineno"> 7086</span>&#160;</div><div class="line"><a name="l07090"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#ae2ce434c5100e5b467ea8c6561e1f11e"> 7090</a></span>&#160;    <a class="code" href="classcl_1_1_command_queue.html#ae2ce434c5100e5b467ea8c6561e1f11e">CommandQueue</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a>&amp; queue) : detail::Wrapper&lt;cl_type&gt;(queue) {}</div><div class="line"><a name="l07091"></a><span class="lineno"> 7091</span>&#160;</div><div class="line"><a name="l07095"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#aafedf5e6899afe6097062277e4c3da17"> 7095</a></span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue)</div><div class="line"><a name="l07096"></a><span class="lineno"> 7096</span>&#160;    {</div><div class="line"><a name="l07097"></a><span class="lineno"> 7097</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(queue);</div><div class="line"><a name="l07098"></a><span class="lineno"> 7098</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l07099"></a><span class="lineno"> 7099</span>&#160;    }</div><div class="line"><a name="l07100"></a><span class="lineno"> 7100</span>&#160;</div><div class="line"><a name="l07104"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a1c5830678be567e34dccbb0065c89b21"> 7104</a></span>&#160;    <a class="code" href="classcl_1_1_command_queue.html#a1c5830678be567e34dccbb0065c89b21">CommandQueue</a>(<a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a>&amp;&amp; queue) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;</a>(std::move(queue)) {}</div><div class="line"><a name="l07105"></a><span class="lineno"> 7105</span>&#160;</div><div class="line"><a name="l07109"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#af448f36396f06bcf9fffd5762c15d67d"> 7109</a></span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a>&amp; operator = (<a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;&amp;queue)</div><div class="line"><a name="l07110"></a><span class="lineno"> 7110</span>&#160;    {</div><div class="line"><a name="l07111"></a><span class="lineno"> 7111</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(std::move(queue));</div><div class="line"><a name="l07112"></a><span class="lineno"> 7112</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l07113"></a><span class="lineno"> 7113</span>&#160;    }</div><div class="line"><a name="l07114"></a><span class="lineno"> 7114</span>&#160;</div><div class="line"><a name="l07115"></a><span class="lineno"> 7115</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l07116"></a><span class="lineno"> 7116</span>&#160;    cl_int getInfo(cl_command_queue_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l07117"></a><span class="lineno"> 7117</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07118"></a><span class="lineno"> 7118</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l07119"></a><span class="lineno"> 7119</span>&#160;            detail::getInfo(</div><div class="line"><a name="l07120"></a><span class="lineno"> 7120</span>&#160;                &amp;::clGetCommandQueueInfo, object_, name, param),</div><div class="line"><a name="l07121"></a><span class="lineno"> 7121</span>&#160;                __GET_COMMAND_QUEUE_INFO_ERR);</div><div class="line"><a name="l07122"></a><span class="lineno"> 7122</span>&#160;    }</div><div class="line"><a name="l07123"></a><span class="lineno"> 7123</span>&#160;</div><div class="line"><a name="l07124"></a><span class="lineno"> 7124</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l07125"></a><span class="lineno"> 7125</span>&#160;    <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_command_queue_info, name&gt;::param_type</a></div><div class="line"><a name="l07126"></a><span class="lineno"> 7126</span>&#160;    getInfo(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07127"></a><span class="lineno"> 7127</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07128"></a><span class="lineno"> 7128</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l07129"></a><span class="lineno"> 7129</span>&#160;            detail::cl_command_queue_info, name&gt;::param_type param;</div><div class="line"><a name="l07130"></a><span class="lineno"> 7130</span>&#160;        cl_int result = getInfo(name, &amp;param);</div><div class="line"><a name="l07131"></a><span class="lineno"> 7131</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l07132"></a><span class="lineno"> 7132</span>&#160;            *err = result;</div><div class="line"><a name="l07133"></a><span class="lineno"> 7133</span>&#160;        }</div><div class="line"><a name="l07134"></a><span class="lineno"> 7134</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l07135"></a><span class="lineno"> 7135</span>&#160;    }</div><div class="line"><a name="l07136"></a><span class="lineno"> 7136</span>&#160;</div><div class="line"><a name="l07137"></a><span class="lineno"> 7137</span>&#160;    cl_int enqueueReadBuffer(</div><div class="line"><a name="l07138"></a><span class="lineno"> 7138</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buffer,</div><div class="line"><a name="l07139"></a><span class="lineno"> 7139</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l07140"></a><span class="lineno"> 7140</span>&#160;        size_type offset,</div><div class="line"><a name="l07141"></a><span class="lineno"> 7141</span>&#160;        size_type size,</div><div class="line"><a name="l07142"></a><span class="lineno"> 7142</span>&#160;        <span class="keywordtype">void</span>* ptr,</div><div class="line"><a name="l07143"></a><span class="lineno"> 7143</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07144"></a><span class="lineno"> 7144</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07145"></a><span class="lineno"> 7145</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07146"></a><span class="lineno"> 7146</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07147"></a><span class="lineno"> 7147</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07148"></a><span class="lineno"> 7148</span>&#160;            ::clEnqueueReadBuffer(</div><div class="line"><a name="l07149"></a><span class="lineno"> 7149</span>&#160;                object_, buffer(), blocking, offset, size,</div><div class="line"><a name="l07150"></a><span class="lineno"> 7150</span>&#160;                ptr,</div><div class="line"><a name="l07151"></a><span class="lineno"> 7151</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07152"></a><span class="lineno"> 7152</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07153"></a><span class="lineno"> 7153</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07154"></a><span class="lineno"> 7154</span>&#160;            __ENQUEUE_READ_BUFFER_ERR);</div><div class="line"><a name="l07155"></a><span class="lineno"> 7155</span>&#160;</div><div class="line"><a name="l07156"></a><span class="lineno"> 7156</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07157"></a><span class="lineno"> 7157</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07158"></a><span class="lineno"> 7158</span>&#160;</div><div class="line"><a name="l07159"></a><span class="lineno"> 7159</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07160"></a><span class="lineno"> 7160</span>&#160;    }</div><div class="line"><a name="l07161"></a><span class="lineno"> 7161</span>&#160;</div><div class="line"><a name="l07162"></a><span class="lineno"> 7162</span>&#160;    cl_int enqueueWriteBuffer(</div><div class="line"><a name="l07163"></a><span class="lineno"> 7163</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buffer,</div><div class="line"><a name="l07164"></a><span class="lineno"> 7164</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l07165"></a><span class="lineno"> 7165</span>&#160;        size_type offset,</div><div class="line"><a name="l07166"></a><span class="lineno"> 7166</span>&#160;        size_type size,</div><div class="line"><a name="l07167"></a><span class="lineno"> 7167</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">void</span>* ptr,</div><div class="line"><a name="l07168"></a><span class="lineno"> 7168</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07169"></a><span class="lineno"> 7169</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07170"></a><span class="lineno"> 7170</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07171"></a><span class="lineno"> 7171</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07172"></a><span class="lineno"> 7172</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07173"></a><span class="lineno"> 7173</span>&#160;            ::clEnqueueWriteBuffer(</div><div class="line"><a name="l07174"></a><span class="lineno"> 7174</span>&#160;                object_, buffer(), blocking, offset, size,</div><div class="line"><a name="l07175"></a><span class="lineno"> 7175</span>&#160;                ptr,</div><div class="line"><a name="l07176"></a><span class="lineno"> 7176</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07177"></a><span class="lineno"> 7177</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07178"></a><span class="lineno"> 7178</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07179"></a><span class="lineno"> 7179</span>&#160;                __ENQUEUE_WRITE_BUFFER_ERR);</div><div class="line"><a name="l07180"></a><span class="lineno"> 7180</span>&#160;</div><div class="line"><a name="l07181"></a><span class="lineno"> 7181</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07182"></a><span class="lineno"> 7182</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07183"></a><span class="lineno"> 7183</span>&#160;</div><div class="line"><a name="l07184"></a><span class="lineno"> 7184</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07185"></a><span class="lineno"> 7185</span>&#160;    }</div><div class="line"><a name="l07186"></a><span class="lineno"> 7186</span>&#160;</div><div class="line"><a name="l07187"></a><span class="lineno"> 7187</span>&#160;    cl_int enqueueCopyBuffer(</div><div class="line"><a name="l07188"></a><span class="lineno"> 7188</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; src,</div><div class="line"><a name="l07189"></a><span class="lineno"> 7189</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; dst,</div><div class="line"><a name="l07190"></a><span class="lineno"> 7190</span>&#160;        size_type src_offset,</div><div class="line"><a name="l07191"></a><span class="lineno"> 7191</span>&#160;        size_type dst_offset,</div><div class="line"><a name="l07192"></a><span class="lineno"> 7192</span>&#160;        size_type size,</div><div class="line"><a name="l07193"></a><span class="lineno"> 7193</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07194"></a><span class="lineno"> 7194</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07195"></a><span class="lineno"> 7195</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07196"></a><span class="lineno"> 7196</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07197"></a><span class="lineno"> 7197</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07198"></a><span class="lineno"> 7198</span>&#160;            ::clEnqueueCopyBuffer(</div><div class="line"><a name="l07199"></a><span class="lineno"> 7199</span>&#160;                object_, src(), dst(), src_offset, dst_offset, size,</div><div class="line"><a name="l07200"></a><span class="lineno"> 7200</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07201"></a><span class="lineno"> 7201</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07202"></a><span class="lineno"> 7202</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07203"></a><span class="lineno"> 7203</span>&#160;            __ENQEUE_COPY_BUFFER_ERR);</div><div class="line"><a name="l07204"></a><span class="lineno"> 7204</span>&#160;</div><div class="line"><a name="l07205"></a><span class="lineno"> 7205</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07206"></a><span class="lineno"> 7206</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07207"></a><span class="lineno"> 7207</span>&#160;</div><div class="line"><a name="l07208"></a><span class="lineno"> 7208</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07209"></a><span class="lineno"> 7209</span>&#160;    }</div><div class="line"><a name="l07210"></a><span class="lineno"> 7210</span>&#160;</div><div class="line"><a name="l07211"></a><span class="lineno"> 7211</span>&#160;    cl_int enqueueReadBufferRect(</div><div class="line"><a name="l07212"></a><span class="lineno"> 7212</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buffer,</div><div class="line"><a name="l07213"></a><span class="lineno"> 7213</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l07214"></a><span class="lineno"> 7214</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; buffer_offset,</div><div class="line"><a name="l07215"></a><span class="lineno"> 7215</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; host_offset,</div><div class="line"><a name="l07216"></a><span class="lineno"> 7216</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07217"></a><span class="lineno"> 7217</span>&#160;        size_type buffer_row_pitch,</div><div class="line"><a name="l07218"></a><span class="lineno"> 7218</span>&#160;        size_type buffer_slice_pitch,</div><div class="line"><a name="l07219"></a><span class="lineno"> 7219</span>&#160;        size_type host_row_pitch,</div><div class="line"><a name="l07220"></a><span class="lineno"> 7220</span>&#160;        size_type host_slice_pitch,</div><div class="line"><a name="l07221"></a><span class="lineno"> 7221</span>&#160;        <span class="keywordtype">void</span> *ptr,</div><div class="line"><a name="l07222"></a><span class="lineno"> 7222</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07223"></a><span class="lineno"> 7223</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07224"></a><span class="lineno"> 7224</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07225"></a><span class="lineno"> 7225</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07226"></a><span class="lineno"> 7226</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07227"></a><span class="lineno"> 7227</span>&#160;            ::clEnqueueReadBufferRect(</div><div class="line"><a name="l07228"></a><span class="lineno"> 7228</span>&#160;                object_, </div><div class="line"><a name="l07229"></a><span class="lineno"> 7229</span>&#160;                buffer(), </div><div class="line"><a name="l07230"></a><span class="lineno"> 7230</span>&#160;                blocking,</div><div class="line"><a name="l07231"></a><span class="lineno"> 7231</span>&#160;                buffer_offset.data(),</div><div class="line"><a name="l07232"></a><span class="lineno"> 7232</span>&#160;                host_offset.data(),</div><div class="line"><a name="l07233"></a><span class="lineno"> 7233</span>&#160;                region.data(),</div><div class="line"><a name="l07234"></a><span class="lineno"> 7234</span>&#160;                buffer_row_pitch,</div><div class="line"><a name="l07235"></a><span class="lineno"> 7235</span>&#160;                buffer_slice_pitch,</div><div class="line"><a name="l07236"></a><span class="lineno"> 7236</span>&#160;                host_row_pitch,</div><div class="line"><a name="l07237"></a><span class="lineno"> 7237</span>&#160;                host_slice_pitch,</div><div class="line"><a name="l07238"></a><span class="lineno"> 7238</span>&#160;                ptr,</div><div class="line"><a name="l07239"></a><span class="lineno"> 7239</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07240"></a><span class="lineno"> 7240</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07241"></a><span class="lineno"> 7241</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07242"></a><span class="lineno"> 7242</span>&#160;                __ENQUEUE_READ_BUFFER_RECT_ERR);</div><div class="line"><a name="l07243"></a><span class="lineno"> 7243</span>&#160;</div><div class="line"><a name="l07244"></a><span class="lineno"> 7244</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07245"></a><span class="lineno"> 7245</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07246"></a><span class="lineno"> 7246</span>&#160;</div><div class="line"><a name="l07247"></a><span class="lineno"> 7247</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07248"></a><span class="lineno"> 7248</span>&#160;    }</div><div class="line"><a name="l07249"></a><span class="lineno"> 7249</span>&#160;</div><div class="line"><a name="l07250"></a><span class="lineno"> 7250</span>&#160;    cl_int enqueueWriteBufferRect(</div><div class="line"><a name="l07251"></a><span class="lineno"> 7251</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buffer,</div><div class="line"><a name="l07252"></a><span class="lineno"> 7252</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l07253"></a><span class="lineno"> 7253</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; buffer_offset,</div><div class="line"><a name="l07254"></a><span class="lineno"> 7254</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; host_offset,</div><div class="line"><a name="l07255"></a><span class="lineno"> 7255</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07256"></a><span class="lineno"> 7256</span>&#160;        size_type buffer_row_pitch,</div><div class="line"><a name="l07257"></a><span class="lineno"> 7257</span>&#160;        size_type buffer_slice_pitch,</div><div class="line"><a name="l07258"></a><span class="lineno"> 7258</span>&#160;        size_type host_row_pitch,</div><div class="line"><a name="l07259"></a><span class="lineno"> 7259</span>&#160;        size_type host_slice_pitch,</div><div class="line"><a name="l07260"></a><span class="lineno"> 7260</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">void</span> *ptr,</div><div class="line"><a name="l07261"></a><span class="lineno"> 7261</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07262"></a><span class="lineno"> 7262</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07263"></a><span class="lineno"> 7263</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07264"></a><span class="lineno"> 7264</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07265"></a><span class="lineno"> 7265</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07266"></a><span class="lineno"> 7266</span>&#160;            ::clEnqueueWriteBufferRect(</div><div class="line"><a name="l07267"></a><span class="lineno"> 7267</span>&#160;                object_, </div><div class="line"><a name="l07268"></a><span class="lineno"> 7268</span>&#160;                buffer(), </div><div class="line"><a name="l07269"></a><span class="lineno"> 7269</span>&#160;                blocking,</div><div class="line"><a name="l07270"></a><span class="lineno"> 7270</span>&#160;                buffer_offset.data(),</div><div class="line"><a name="l07271"></a><span class="lineno"> 7271</span>&#160;                host_offset.data(),</div><div class="line"><a name="l07272"></a><span class="lineno"> 7272</span>&#160;                region.data(),</div><div class="line"><a name="l07273"></a><span class="lineno"> 7273</span>&#160;                buffer_row_pitch,</div><div class="line"><a name="l07274"></a><span class="lineno"> 7274</span>&#160;                buffer_slice_pitch,</div><div class="line"><a name="l07275"></a><span class="lineno"> 7275</span>&#160;                host_row_pitch,</div><div class="line"><a name="l07276"></a><span class="lineno"> 7276</span>&#160;                host_slice_pitch,</div><div class="line"><a name="l07277"></a><span class="lineno"> 7277</span>&#160;                ptr,</div><div class="line"><a name="l07278"></a><span class="lineno"> 7278</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07279"></a><span class="lineno"> 7279</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07280"></a><span class="lineno"> 7280</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07281"></a><span class="lineno"> 7281</span>&#160;                __ENQUEUE_WRITE_BUFFER_RECT_ERR);</div><div class="line"><a name="l07282"></a><span class="lineno"> 7282</span>&#160;</div><div class="line"><a name="l07283"></a><span class="lineno"> 7283</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07284"></a><span class="lineno"> 7284</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07285"></a><span class="lineno"> 7285</span>&#160;</div><div class="line"><a name="l07286"></a><span class="lineno"> 7286</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07287"></a><span class="lineno"> 7287</span>&#160;    }</div><div class="line"><a name="l07288"></a><span class="lineno"> 7288</span>&#160;</div><div class="line"><a name="l07289"></a><span class="lineno"> 7289</span>&#160;    cl_int enqueueCopyBufferRect(</div><div class="line"><a name="l07290"></a><span class="lineno"> 7290</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; src,</div><div class="line"><a name="l07291"></a><span class="lineno"> 7291</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; dst,</div><div class="line"><a name="l07292"></a><span class="lineno"> 7292</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; src_origin,</div><div class="line"><a name="l07293"></a><span class="lineno"> 7293</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; dst_origin,</div><div class="line"><a name="l07294"></a><span class="lineno"> 7294</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07295"></a><span class="lineno"> 7295</span>&#160;        size_type src_row_pitch,</div><div class="line"><a name="l07296"></a><span class="lineno"> 7296</span>&#160;        size_type src_slice_pitch,</div><div class="line"><a name="l07297"></a><span class="lineno"> 7297</span>&#160;        size_type dst_row_pitch,</div><div class="line"><a name="l07298"></a><span class="lineno"> 7298</span>&#160;        size_type dst_slice_pitch,</div><div class="line"><a name="l07299"></a><span class="lineno"> 7299</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07300"></a><span class="lineno"> 7300</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07301"></a><span class="lineno"> 7301</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07302"></a><span class="lineno"> 7302</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07303"></a><span class="lineno"> 7303</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07304"></a><span class="lineno"> 7304</span>&#160;            ::clEnqueueCopyBufferRect(</div><div class="line"><a name="l07305"></a><span class="lineno"> 7305</span>&#160;                object_, </div><div class="line"><a name="l07306"></a><span class="lineno"> 7306</span>&#160;                src(), </div><div class="line"><a name="l07307"></a><span class="lineno"> 7307</span>&#160;                dst(), </div><div class="line"><a name="l07308"></a><span class="lineno"> 7308</span>&#160;                src_origin.data(),</div><div class="line"><a name="l07309"></a><span class="lineno"> 7309</span>&#160;                dst_origin.data(),</div><div class="line"><a name="l07310"></a><span class="lineno"> 7310</span>&#160;                region.data(),</div><div class="line"><a name="l07311"></a><span class="lineno"> 7311</span>&#160;                src_row_pitch,</div><div class="line"><a name="l07312"></a><span class="lineno"> 7312</span>&#160;                src_slice_pitch,</div><div class="line"><a name="l07313"></a><span class="lineno"> 7313</span>&#160;                dst_row_pitch,</div><div class="line"><a name="l07314"></a><span class="lineno"> 7314</span>&#160;                dst_slice_pitch,</div><div class="line"><a name="l07315"></a><span class="lineno"> 7315</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07316"></a><span class="lineno"> 7316</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07317"></a><span class="lineno"> 7317</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07318"></a><span class="lineno"> 7318</span>&#160;            __ENQEUE_COPY_BUFFER_RECT_ERR);</div><div class="line"><a name="l07319"></a><span class="lineno"> 7319</span>&#160;</div><div class="line"><a name="l07320"></a><span class="lineno"> 7320</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07321"></a><span class="lineno"> 7321</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07322"></a><span class="lineno"> 7322</span>&#160;</div><div class="line"><a name="l07323"></a><span class="lineno"> 7323</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07324"></a><span class="lineno"> 7324</span>&#160;    }</div><div class="line"><a name="l07325"></a><span class="lineno"> 7325</span>&#160;</div><div class="line"><a name="l07326"></a><span class="lineno"> 7326</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l07327"></a><span class="lineno"> 7327</span>&#160;</div><div class="line"><a name="l07338"></a><span class="lineno"> 7338</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> PatternType&gt;</div><div class="line"><a name="l07339"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a09f546d77b717ce26606c462c0ca9d1c"> 7339</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#a09f546d77b717ce26606c462c0ca9d1c">enqueueFillBuffer</a>(</div><div class="line"><a name="l07340"></a><span class="lineno"> 7340</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buffer,</div><div class="line"><a name="l07341"></a><span class="lineno"> 7341</span>&#160;        PatternType pattern,</div><div class="line"><a name="l07342"></a><span class="lineno"> 7342</span>&#160;        size_type offset,</div><div class="line"><a name="l07343"></a><span class="lineno"> 7343</span>&#160;        size_type size,</div><div class="line"><a name="l07344"></a><span class="lineno"> 7344</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07345"></a><span class="lineno"> 7345</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07346"></a><span class="lineno"> 7346</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07347"></a><span class="lineno"> 7347</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07348"></a><span class="lineno"> 7348</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07349"></a><span class="lineno"> 7349</span>&#160;            ::clEnqueueFillBuffer(</div><div class="line"><a name="l07350"></a><span class="lineno"> 7350</span>&#160;                object_, </div><div class="line"><a name="l07351"></a><span class="lineno"> 7351</span>&#160;                buffer(),</div><div class="line"><a name="l07352"></a><span class="lineno"> 7352</span>&#160;                static_cast&lt;void*&gt;(&amp;pattern),</div><div class="line"><a name="l07353"></a><span class="lineno"> 7353</span>&#160;                <span class="keyword">sizeof</span>(PatternType), </div><div class="line"><a name="l07354"></a><span class="lineno"> 7354</span>&#160;                offset, </div><div class="line"><a name="l07355"></a><span class="lineno"> 7355</span>&#160;                size,</div><div class="line"><a name="l07356"></a><span class="lineno"> 7356</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07357"></a><span class="lineno"> 7357</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07358"></a><span class="lineno"> 7358</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07359"></a><span class="lineno"> 7359</span>&#160;                __ENQUEUE_FILL_BUFFER_ERR);</div><div class="line"><a name="l07360"></a><span class="lineno"> 7360</span>&#160;</div><div class="line"><a name="l07361"></a><span class="lineno"> 7361</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07362"></a><span class="lineno"> 7362</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07363"></a><span class="lineno"> 7363</span>&#160;</div><div class="line"><a name="l07364"></a><span class="lineno"> 7364</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07365"></a><span class="lineno"> 7365</span>&#160;    }</div><div class="line"><a name="l07366"></a><span class="lineno"> 7366</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l07367"></a><span class="lineno"> 7367</span>&#160;</div><div class="line"><a name="l07368"></a><span class="lineno"> 7368</span>&#160;    cl_int enqueueReadImage(</div><div class="line"><a name="l07369"></a><span class="lineno"> 7369</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; image,</div><div class="line"><a name="l07370"></a><span class="lineno"> 7370</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l07371"></a><span class="lineno"> 7371</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; origin,</div><div class="line"><a name="l07372"></a><span class="lineno"> 7372</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07373"></a><span class="lineno"> 7373</span>&#160;        size_type row_pitch,</div><div class="line"><a name="l07374"></a><span class="lineno"> 7374</span>&#160;        size_type slice_pitch,</div><div class="line"><a name="l07375"></a><span class="lineno"> 7375</span>&#160;        <span class="keywordtype">void</span>* ptr,</div><div class="line"><a name="l07376"></a><span class="lineno"> 7376</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07377"></a><span class="lineno"> 7377</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07378"></a><span class="lineno"> 7378</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07379"></a><span class="lineno"> 7379</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07380"></a><span class="lineno"> 7380</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07381"></a><span class="lineno"> 7381</span>&#160;            ::clEnqueueReadImage(</div><div class="line"><a name="l07382"></a><span class="lineno"> 7382</span>&#160;                object_, </div><div class="line"><a name="l07383"></a><span class="lineno"> 7383</span>&#160;                image(), </div><div class="line"><a name="l07384"></a><span class="lineno"> 7384</span>&#160;                blocking, </div><div class="line"><a name="l07385"></a><span class="lineno"> 7385</span>&#160;                origin.data(),</div><div class="line"><a name="l07386"></a><span class="lineno"> 7386</span>&#160;                region.data(), </div><div class="line"><a name="l07387"></a><span class="lineno"> 7387</span>&#160;                row_pitch, </div><div class="line"><a name="l07388"></a><span class="lineno"> 7388</span>&#160;                slice_pitch, </div><div class="line"><a name="l07389"></a><span class="lineno"> 7389</span>&#160;                ptr,</div><div class="line"><a name="l07390"></a><span class="lineno"> 7390</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07391"></a><span class="lineno"> 7391</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07392"></a><span class="lineno"> 7392</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07393"></a><span class="lineno"> 7393</span>&#160;            __ENQUEUE_READ_IMAGE_ERR);</div><div class="line"><a name="l07394"></a><span class="lineno"> 7394</span>&#160;</div><div class="line"><a name="l07395"></a><span class="lineno"> 7395</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07396"></a><span class="lineno"> 7396</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07397"></a><span class="lineno"> 7397</span>&#160;</div><div class="line"><a name="l07398"></a><span class="lineno"> 7398</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07399"></a><span class="lineno"> 7399</span>&#160;    }</div><div class="line"><a name="l07400"></a><span class="lineno"> 7400</span>&#160;</div><div class="line"><a name="l07401"></a><span class="lineno"> 7401</span>&#160;    cl_int enqueueWriteImage(</div><div class="line"><a name="l07402"></a><span class="lineno"> 7402</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; image,</div><div class="line"><a name="l07403"></a><span class="lineno"> 7403</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l07404"></a><span class="lineno"> 7404</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; origin,</div><div class="line"><a name="l07405"></a><span class="lineno"> 7405</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07406"></a><span class="lineno"> 7406</span>&#160;        size_type row_pitch,</div><div class="line"><a name="l07407"></a><span class="lineno"> 7407</span>&#160;        size_type slice_pitch,</div><div class="line"><a name="l07408"></a><span class="lineno"> 7408</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">void</span>* ptr,</div><div class="line"><a name="l07409"></a><span class="lineno"> 7409</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07410"></a><span class="lineno"> 7410</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07411"></a><span class="lineno"> 7411</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07412"></a><span class="lineno"> 7412</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07413"></a><span class="lineno"> 7413</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07414"></a><span class="lineno"> 7414</span>&#160;            ::clEnqueueWriteImage(</div><div class="line"><a name="l07415"></a><span class="lineno"> 7415</span>&#160;                object_, </div><div class="line"><a name="l07416"></a><span class="lineno"> 7416</span>&#160;                image(), </div><div class="line"><a name="l07417"></a><span class="lineno"> 7417</span>&#160;                blocking, </div><div class="line"><a name="l07418"></a><span class="lineno"> 7418</span>&#160;                origin.data(),</div><div class="line"><a name="l07419"></a><span class="lineno"> 7419</span>&#160;                region.data(), </div><div class="line"><a name="l07420"></a><span class="lineno"> 7420</span>&#160;                row_pitch, </div><div class="line"><a name="l07421"></a><span class="lineno"> 7421</span>&#160;                slice_pitch, </div><div class="line"><a name="l07422"></a><span class="lineno"> 7422</span>&#160;                ptr,</div><div class="line"><a name="l07423"></a><span class="lineno"> 7423</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07424"></a><span class="lineno"> 7424</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07425"></a><span class="lineno"> 7425</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07426"></a><span class="lineno"> 7426</span>&#160;            __ENQUEUE_WRITE_IMAGE_ERR);</div><div class="line"><a name="l07427"></a><span class="lineno"> 7427</span>&#160;</div><div class="line"><a name="l07428"></a><span class="lineno"> 7428</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07429"></a><span class="lineno"> 7429</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07430"></a><span class="lineno"> 7430</span>&#160;</div><div class="line"><a name="l07431"></a><span class="lineno"> 7431</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07432"></a><span class="lineno"> 7432</span>&#160;    }</div><div class="line"><a name="l07433"></a><span class="lineno"> 7433</span>&#160;</div><div class="line"><a name="l07434"></a><span class="lineno"> 7434</span>&#160;    cl_int enqueueCopyImage(</div><div class="line"><a name="l07435"></a><span class="lineno"> 7435</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; src,</div><div class="line"><a name="l07436"></a><span class="lineno"> 7436</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; dst,</div><div class="line"><a name="l07437"></a><span class="lineno"> 7437</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; src_origin,</div><div class="line"><a name="l07438"></a><span class="lineno"> 7438</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; dst_origin,</div><div class="line"><a name="l07439"></a><span class="lineno"> 7439</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07440"></a><span class="lineno"> 7440</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07441"></a><span class="lineno"> 7441</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07442"></a><span class="lineno"> 7442</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07443"></a><span class="lineno"> 7443</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07444"></a><span class="lineno"> 7444</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07445"></a><span class="lineno"> 7445</span>&#160;            ::clEnqueueCopyImage(</div><div class="line"><a name="l07446"></a><span class="lineno"> 7446</span>&#160;                object_, </div><div class="line"><a name="l07447"></a><span class="lineno"> 7447</span>&#160;                src(), </div><div class="line"><a name="l07448"></a><span class="lineno"> 7448</span>&#160;                dst(), </div><div class="line"><a name="l07449"></a><span class="lineno"> 7449</span>&#160;                src_origin.data(),</div><div class="line"><a name="l07450"></a><span class="lineno"> 7450</span>&#160;                dst_origin.data(), </div><div class="line"><a name="l07451"></a><span class="lineno"> 7451</span>&#160;                region.data(),</div><div class="line"><a name="l07452"></a><span class="lineno"> 7452</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07453"></a><span class="lineno"> 7453</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07454"></a><span class="lineno"> 7454</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07455"></a><span class="lineno"> 7455</span>&#160;            __ENQUEUE_COPY_IMAGE_ERR);</div><div class="line"><a name="l07456"></a><span class="lineno"> 7456</span>&#160;</div><div class="line"><a name="l07457"></a><span class="lineno"> 7457</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07458"></a><span class="lineno"> 7458</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07459"></a><span class="lineno"> 7459</span>&#160;</div><div class="line"><a name="l07460"></a><span class="lineno"> 7460</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07461"></a><span class="lineno"> 7461</span>&#160;    }</div><div class="line"><a name="l07462"></a><span class="lineno"> 7462</span>&#160;</div><div class="line"><a name="l07463"></a><span class="lineno"> 7463</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l07464"></a><span class="lineno"> 7464</span>&#160;</div><div class="line"><a name="l07471"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a9c3230b644ad638973be7199e0451e46"> 7471</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#a9c3230b644ad638973be7199e0451e46">enqueueFillImage</a>(</div><div class="line"><a name="l07472"></a><span class="lineno"> 7472</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; image,</div><div class="line"><a name="l07473"></a><span class="lineno"> 7473</span>&#160;        cl_float4 fillColor,</div><div class="line"><a name="l07474"></a><span class="lineno"> 7474</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; origin,</div><div class="line"><a name="l07475"></a><span class="lineno"> 7475</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07476"></a><span class="lineno"> 7476</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07477"></a><span class="lineno"> 7477</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07478"></a><span class="lineno"> 7478</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07479"></a><span class="lineno"> 7479</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07480"></a><span class="lineno"> 7480</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07481"></a><span class="lineno"> 7481</span>&#160;            ::clEnqueueFillImage(</div><div class="line"><a name="l07482"></a><span class="lineno"> 7482</span>&#160;                object_, </div><div class="line"><a name="l07483"></a><span class="lineno"> 7483</span>&#160;                image(),</div><div class="line"><a name="l07484"></a><span class="lineno"> 7484</span>&#160;                static_cast&lt;void*&gt;(&amp;fillColor), </div><div class="line"><a name="l07485"></a><span class="lineno"> 7485</span>&#160;                origin.data(),</div><div class="line"><a name="l07486"></a><span class="lineno"> 7486</span>&#160;                region.data(),</div><div class="line"><a name="l07487"></a><span class="lineno"> 7487</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07488"></a><span class="lineno"> 7488</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07489"></a><span class="lineno"> 7489</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07490"></a><span class="lineno"> 7490</span>&#160;                __ENQUEUE_FILL_IMAGE_ERR);</div><div class="line"><a name="l07491"></a><span class="lineno"> 7491</span>&#160;</div><div class="line"><a name="l07492"></a><span class="lineno"> 7492</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07493"></a><span class="lineno"> 7493</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07494"></a><span class="lineno"> 7494</span>&#160;</div><div class="line"><a name="l07495"></a><span class="lineno"> 7495</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07496"></a><span class="lineno"> 7496</span>&#160;    }</div><div class="line"><a name="l07497"></a><span class="lineno"> 7497</span>&#160;</div><div class="line"><a name="l07505"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#acb2c278ef4f177c5d01035c008a5cb3e"> 7505</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#acb2c278ef4f177c5d01035c008a5cb3e">enqueueFillImage</a>(</div><div class="line"><a name="l07506"></a><span class="lineno"> 7506</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; image,</div><div class="line"><a name="l07507"></a><span class="lineno"> 7507</span>&#160;        cl_int4 fillColor,</div><div class="line"><a name="l07508"></a><span class="lineno"> 7508</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; origin,</div><div class="line"><a name="l07509"></a><span class="lineno"> 7509</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07510"></a><span class="lineno"> 7510</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07511"></a><span class="lineno"> 7511</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07512"></a><span class="lineno"> 7512</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07513"></a><span class="lineno"> 7513</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07514"></a><span class="lineno"> 7514</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07515"></a><span class="lineno"> 7515</span>&#160;            ::clEnqueueFillImage(</div><div class="line"><a name="l07516"></a><span class="lineno"> 7516</span>&#160;                object_, </div><div class="line"><a name="l07517"></a><span class="lineno"> 7517</span>&#160;                image(),</div><div class="line"><a name="l07518"></a><span class="lineno"> 7518</span>&#160;                static_cast&lt;void*&gt;(&amp;fillColor), </div><div class="line"><a name="l07519"></a><span class="lineno"> 7519</span>&#160;                origin.data(),</div><div class="line"><a name="l07520"></a><span class="lineno"> 7520</span>&#160;                region.data(),</div><div class="line"><a name="l07521"></a><span class="lineno"> 7521</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07522"></a><span class="lineno"> 7522</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07523"></a><span class="lineno"> 7523</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07524"></a><span class="lineno"> 7524</span>&#160;                __ENQUEUE_FILL_IMAGE_ERR);</div><div class="line"><a name="l07525"></a><span class="lineno"> 7525</span>&#160;</div><div class="line"><a name="l07526"></a><span class="lineno"> 7526</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07527"></a><span class="lineno"> 7527</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07528"></a><span class="lineno"> 7528</span>&#160;</div><div class="line"><a name="l07529"></a><span class="lineno"> 7529</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07530"></a><span class="lineno"> 7530</span>&#160;    }</div><div class="line"><a name="l07531"></a><span class="lineno"> 7531</span>&#160;</div><div class="line"><a name="l07539"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a3081328f7b10be88e87eb719d3ad6307"> 7539</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#a3081328f7b10be88e87eb719d3ad6307">enqueueFillImage</a>(</div><div class="line"><a name="l07540"></a><span class="lineno"> 7540</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; image,</div><div class="line"><a name="l07541"></a><span class="lineno"> 7541</span>&#160;        cl_uint4 fillColor,</div><div class="line"><a name="l07542"></a><span class="lineno"> 7542</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; origin,</div><div class="line"><a name="l07543"></a><span class="lineno"> 7543</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07544"></a><span class="lineno"> 7544</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07545"></a><span class="lineno"> 7545</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07546"></a><span class="lineno"> 7546</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07547"></a><span class="lineno"> 7547</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07548"></a><span class="lineno"> 7548</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07549"></a><span class="lineno"> 7549</span>&#160;            ::clEnqueueFillImage(</div><div class="line"><a name="l07550"></a><span class="lineno"> 7550</span>&#160;                object_, </div><div class="line"><a name="l07551"></a><span class="lineno"> 7551</span>&#160;                image(),</div><div class="line"><a name="l07552"></a><span class="lineno"> 7552</span>&#160;                static_cast&lt;void*&gt;(&amp;fillColor), </div><div class="line"><a name="l07553"></a><span class="lineno"> 7553</span>&#160;                origin.data(),</div><div class="line"><a name="l07554"></a><span class="lineno"> 7554</span>&#160;                region.data(),</div><div class="line"><a name="l07555"></a><span class="lineno"> 7555</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07556"></a><span class="lineno"> 7556</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07557"></a><span class="lineno"> 7557</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07558"></a><span class="lineno"> 7558</span>&#160;                __ENQUEUE_FILL_IMAGE_ERR);</div><div class="line"><a name="l07559"></a><span class="lineno"> 7559</span>&#160;</div><div class="line"><a name="l07560"></a><span class="lineno"> 7560</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07561"></a><span class="lineno"> 7561</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07562"></a><span class="lineno"> 7562</span>&#160;</div><div class="line"><a name="l07563"></a><span class="lineno"> 7563</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07564"></a><span class="lineno"> 7564</span>&#160;    }</div><div class="line"><a name="l07565"></a><span class="lineno"> 7565</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l07566"></a><span class="lineno"> 7566</span>&#160;</div><div class="line"><a name="l07567"></a><span class="lineno"> 7567</span>&#160;    cl_int enqueueCopyImageToBuffer(</div><div class="line"><a name="l07568"></a><span class="lineno"> 7568</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; src,</div><div class="line"><a name="l07569"></a><span class="lineno"> 7569</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; dst,</div><div class="line"><a name="l07570"></a><span class="lineno"> 7570</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; src_origin,</div><div class="line"><a name="l07571"></a><span class="lineno"> 7571</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07572"></a><span class="lineno"> 7572</span>&#160;        size_type dst_offset,</div><div class="line"><a name="l07573"></a><span class="lineno"> 7573</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07574"></a><span class="lineno"> 7574</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07575"></a><span class="lineno"> 7575</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07576"></a><span class="lineno"> 7576</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07577"></a><span class="lineno"> 7577</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07578"></a><span class="lineno"> 7578</span>&#160;            ::clEnqueueCopyImageToBuffer(</div><div class="line"><a name="l07579"></a><span class="lineno"> 7579</span>&#160;                object_, </div><div class="line"><a name="l07580"></a><span class="lineno"> 7580</span>&#160;                src(), </div><div class="line"><a name="l07581"></a><span class="lineno"> 7581</span>&#160;                dst(), </div><div class="line"><a name="l07582"></a><span class="lineno"> 7582</span>&#160;                src_origin.data(),</div><div class="line"><a name="l07583"></a><span class="lineno"> 7583</span>&#160;                region.data(), </div><div class="line"><a name="l07584"></a><span class="lineno"> 7584</span>&#160;                dst_offset,</div><div class="line"><a name="l07585"></a><span class="lineno"> 7585</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07586"></a><span class="lineno"> 7586</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07587"></a><span class="lineno"> 7587</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07588"></a><span class="lineno"> 7588</span>&#160;            __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR);</div><div class="line"><a name="l07589"></a><span class="lineno"> 7589</span>&#160;</div><div class="line"><a name="l07590"></a><span class="lineno"> 7590</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07591"></a><span class="lineno"> 7591</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07592"></a><span class="lineno"> 7592</span>&#160;</div><div class="line"><a name="l07593"></a><span class="lineno"> 7593</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07594"></a><span class="lineno"> 7594</span>&#160;    }</div><div class="line"><a name="l07595"></a><span class="lineno"> 7595</span>&#160;</div><div class="line"><a name="l07596"></a><span class="lineno"> 7596</span>&#160;    cl_int enqueueCopyBufferToImage(</div><div class="line"><a name="l07597"></a><span class="lineno"> 7597</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; src,</div><div class="line"><a name="l07598"></a><span class="lineno"> 7598</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; dst,</div><div class="line"><a name="l07599"></a><span class="lineno"> 7599</span>&#160;        size_type src_offset,</div><div class="line"><a name="l07600"></a><span class="lineno"> 7600</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; dst_origin,</div><div class="line"><a name="l07601"></a><span class="lineno"> 7601</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07602"></a><span class="lineno"> 7602</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07603"></a><span class="lineno"> 7603</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07604"></a><span class="lineno"> 7604</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07605"></a><span class="lineno"> 7605</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07606"></a><span class="lineno"> 7606</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07607"></a><span class="lineno"> 7607</span>&#160;            ::clEnqueueCopyBufferToImage(</div><div class="line"><a name="l07608"></a><span class="lineno"> 7608</span>&#160;                object_, </div><div class="line"><a name="l07609"></a><span class="lineno"> 7609</span>&#160;                src(), </div><div class="line"><a name="l07610"></a><span class="lineno"> 7610</span>&#160;                dst(), </div><div class="line"><a name="l07611"></a><span class="lineno"> 7611</span>&#160;                src_offset,</div><div class="line"><a name="l07612"></a><span class="lineno"> 7612</span>&#160;                dst_origin.data(), </div><div class="line"><a name="l07613"></a><span class="lineno"> 7613</span>&#160;                region.data(),</div><div class="line"><a name="l07614"></a><span class="lineno"> 7614</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07615"></a><span class="lineno"> 7615</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07616"></a><span class="lineno"> 7616</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07617"></a><span class="lineno"> 7617</span>&#160;            __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR);</div><div class="line"><a name="l07618"></a><span class="lineno"> 7618</span>&#160;</div><div class="line"><a name="l07619"></a><span class="lineno"> 7619</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07620"></a><span class="lineno"> 7620</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07621"></a><span class="lineno"> 7621</span>&#160;</div><div class="line"><a name="l07622"></a><span class="lineno"> 7622</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07623"></a><span class="lineno"> 7623</span>&#160;    }</div><div class="line"><a name="l07624"></a><span class="lineno"> 7624</span>&#160;</div><div class="line"><a name="l07625"></a><span class="lineno"> 7625</span>&#160;    <span class="keywordtype">void</span>* enqueueMapBuffer(</div><div class="line"><a name="l07626"></a><span class="lineno"> 7626</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buffer,</div><div class="line"><a name="l07627"></a><span class="lineno"> 7627</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l07628"></a><span class="lineno"> 7628</span>&#160;        cl_map_flags flags,</div><div class="line"><a name="l07629"></a><span class="lineno"> 7629</span>&#160;        size_type offset,</div><div class="line"><a name="l07630"></a><span class="lineno"> 7630</span>&#160;        size_type size,</div><div class="line"><a name="l07631"></a><span class="lineno"> 7631</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07632"></a><span class="lineno"> 7632</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL,</div><div class="line"><a name="l07633"></a><span class="lineno"> 7633</span>&#160;        cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07634"></a><span class="lineno"> 7634</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07635"></a><span class="lineno"> 7635</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07636"></a><span class="lineno"> 7636</span>&#160;        cl_int error;</div><div class="line"><a name="l07637"></a><span class="lineno"> 7637</span>&#160;        <span class="keywordtype">void</span> * result = ::clEnqueueMapBuffer(</div><div class="line"><a name="l07638"></a><span class="lineno"> 7638</span>&#160;            object_, buffer(), blocking, flags, offset, size,</div><div class="line"><a name="l07639"></a><span class="lineno"> 7639</span>&#160;            (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07640"></a><span class="lineno"> 7640</span>&#160;            (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07641"></a><span class="lineno"> 7641</span>&#160;            (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL,</div><div class="line"><a name="l07642"></a><span class="lineno"> 7642</span>&#160;            &amp;error);</div><div class="line"><a name="l07643"></a><span class="lineno"> 7643</span>&#160;</div><div class="line"><a name="l07644"></a><span class="lineno"> 7644</span>&#160;        detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR);</div><div class="line"><a name="l07645"></a><span class="lineno"> 7645</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l07646"></a><span class="lineno"> 7646</span>&#160;            *err = error;</div><div class="line"><a name="l07647"></a><span class="lineno"> 7647</span>&#160;        }</div><div class="line"><a name="l07648"></a><span class="lineno"> 7648</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; error == CL_SUCCESS)</div><div class="line"><a name="l07649"></a><span class="lineno"> 7649</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07650"></a><span class="lineno"> 7650</span>&#160;</div><div class="line"><a name="l07651"></a><span class="lineno"> 7651</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l07652"></a><span class="lineno"> 7652</span>&#160;    }</div><div class="line"><a name="l07653"></a><span class="lineno"> 7653</span>&#160;</div><div class="line"><a name="l07654"></a><span class="lineno"> 7654</span>&#160;    <span class="keywordtype">void</span>* enqueueMapImage(</div><div class="line"><a name="l07655"></a><span class="lineno"> 7655</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; buffer,</div><div class="line"><a name="l07656"></a><span class="lineno"> 7656</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l07657"></a><span class="lineno"> 7657</span>&#160;        cl_map_flags flags,</div><div class="line"><a name="l07658"></a><span class="lineno"> 7658</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; origin,</div><div class="line"><a name="l07659"></a><span class="lineno"> 7659</span>&#160;        <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l07660"></a><span class="lineno"> 7660</span>&#160;        size_type * row_pitch,</div><div class="line"><a name="l07661"></a><span class="lineno"> 7661</span>&#160;        size_type * slice_pitch,</div><div class="line"><a name="l07662"></a><span class="lineno"> 7662</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07663"></a><span class="lineno"> 7663</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL,</div><div class="line"><a name="l07664"></a><span class="lineno"> 7664</span>&#160;        cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07665"></a><span class="lineno"> 7665</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07666"></a><span class="lineno"> 7666</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07667"></a><span class="lineno"> 7667</span>&#160;        cl_int error;</div><div class="line"><a name="l07668"></a><span class="lineno"> 7668</span>&#160;        <span class="keywordtype">void</span> * result = ::clEnqueueMapImage(</div><div class="line"><a name="l07669"></a><span class="lineno"> 7669</span>&#160;            object_, buffer(), blocking, flags,</div><div class="line"><a name="l07670"></a><span class="lineno"> 7670</span>&#160;            origin.data(), </div><div class="line"><a name="l07671"></a><span class="lineno"> 7671</span>&#160;            region.data(),</div><div class="line"><a name="l07672"></a><span class="lineno"> 7672</span>&#160;            row_pitch, slice_pitch,</div><div class="line"><a name="l07673"></a><span class="lineno"> 7673</span>&#160;            (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07674"></a><span class="lineno"> 7674</span>&#160;            (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07675"></a><span class="lineno"> 7675</span>&#160;            (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL,</div><div class="line"><a name="l07676"></a><span class="lineno"> 7676</span>&#160;            &amp;error);</div><div class="line"><a name="l07677"></a><span class="lineno"> 7677</span>&#160;</div><div class="line"><a name="l07678"></a><span class="lineno"> 7678</span>&#160;        detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR);</div><div class="line"><a name="l07679"></a><span class="lineno"> 7679</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l07680"></a><span class="lineno"> 7680</span>&#160;              *err = error;</div><div class="line"><a name="l07681"></a><span class="lineno"> 7681</span>&#160;        }</div><div class="line"><a name="l07682"></a><span class="lineno"> 7682</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; error == CL_SUCCESS)</div><div class="line"><a name="l07683"></a><span class="lineno"> 7683</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07684"></a><span class="lineno"> 7684</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l07685"></a><span class="lineno"> 7685</span>&#160;    }</div><div class="line"><a name="l07686"></a><span class="lineno"> 7686</span>&#160;</div><div class="line"><a name="l07687"></a><span class="lineno"> 7687</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l07688"></a><span class="lineno"> 7688</span>&#160;</div><div class="line"><a name="l07692"></a><span class="lineno"> 7692</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l07693"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#aec8211d19eb2ffbb8adc7f565fe61c3c"> 7693</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#aec8211d19eb2ffbb8adc7f565fe61c3c">enqueueMapSVM</a>(</div><div class="line"><a name="l07694"></a><span class="lineno"> 7694</span>&#160;        T* ptr,</div><div class="line"><a name="l07695"></a><span class="lineno"> 7695</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l07696"></a><span class="lineno"> 7696</span>&#160;        cl_map_flags flags,</div><div class="line"><a name="l07697"></a><span class="lineno"> 7697</span>&#160;        size_type size,</div><div class="line"><a name="l07698"></a><span class="lineno"> 7698</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07699"></a><span class="lineno"> 7699</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07700"></a><span class="lineno"> 7700</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07701"></a><span class="lineno"> 7701</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07702"></a><span class="lineno"> 7702</span>&#160;        cl_int err = detail::errHandler(::clEnqueueSVMMap(</div><div class="line"><a name="l07703"></a><span class="lineno"> 7703</span>&#160;            object_, blocking, flags, static_cast&lt;void*&gt;(ptr), size,</div><div class="line"><a name="l07704"></a><span class="lineno"> 7704</span>&#160;            (events != NULL) ? (cl_uint)events-&gt;size() : 0,</div><div class="line"><a name="l07705"></a><span class="lineno"> 7705</span>&#160;            (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*)&amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07706"></a><span class="lineno"> 7706</span>&#160;            (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07707"></a><span class="lineno"> 7707</span>&#160;            __ENQUEUE_MAP_BUFFER_ERR);</div><div class="line"><a name="l07708"></a><span class="lineno"> 7708</span>&#160;</div><div class="line"><a name="l07709"></a><span class="lineno"> 7709</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07710"></a><span class="lineno"> 7710</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07711"></a><span class="lineno"> 7711</span>&#160;</div><div class="line"><a name="l07712"></a><span class="lineno"> 7712</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07713"></a><span class="lineno"> 7713</span>&#160;    }</div><div class="line"><a name="l07714"></a><span class="lineno"> 7714</span>&#160;</div><div class="line"><a name="l07715"></a><span class="lineno"> 7715</span>&#160;</div><div class="line"><a name="l07720"></a><span class="lineno"> 7720</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> D&gt;</div><div class="line"><a name="l07721"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a58d16044448bcb2797f490a33e450bde"> 7721</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#a58d16044448bcb2797f490a33e450bde">enqueueMapSVM</a>(</div><div class="line"><a name="l07722"></a><span class="lineno"> 7722</span>&#160;        cl::pointer&lt;T, D&gt; &amp;ptr,</div><div class="line"><a name="l07723"></a><span class="lineno"> 7723</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l07724"></a><span class="lineno"> 7724</span>&#160;        cl_map_flags flags,</div><div class="line"><a name="l07725"></a><span class="lineno"> 7725</span>&#160;        size_type size,</div><div class="line"><a name="l07726"></a><span class="lineno"> 7726</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07727"></a><span class="lineno"> 7727</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07728"></a><span class="lineno"> 7728</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07729"></a><span class="lineno"> 7729</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07730"></a><span class="lineno"> 7730</span>&#160;        cl_int err = detail::errHandler(::clEnqueueSVMMap(</div><div class="line"><a name="l07731"></a><span class="lineno"> 7731</span>&#160;            object_, blocking, flags, static_cast&lt;void*&gt;(ptr.get()), size,</div><div class="line"><a name="l07732"></a><span class="lineno"> 7732</span>&#160;            (events != NULL) ? (cl_uint)events-&gt;size() : 0,</div><div class="line"><a name="l07733"></a><span class="lineno"> 7733</span>&#160;            (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*)&amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07734"></a><span class="lineno"> 7734</span>&#160;            (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07735"></a><span class="lineno"> 7735</span>&#160;            __ENQUEUE_MAP_BUFFER_ERR);</div><div class="line"><a name="l07736"></a><span class="lineno"> 7736</span>&#160;</div><div class="line"><a name="l07737"></a><span class="lineno"> 7737</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07738"></a><span class="lineno"> 7738</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07739"></a><span class="lineno"> 7739</span>&#160;</div><div class="line"><a name="l07740"></a><span class="lineno"> 7740</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07741"></a><span class="lineno"> 7741</span>&#160;    }</div><div class="line"><a name="l07742"></a><span class="lineno"> 7742</span>&#160;</div><div class="line"><a name="l07747"></a><span class="lineno"> 7747</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> Alloc&gt;</div><div class="line"><a name="l07748"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a30fcb95415b760f23b2abba6e0842125"> 7748</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#a30fcb95415b760f23b2abba6e0842125">enqueueMapSVM</a>(</div><div class="line"><a name="l07749"></a><span class="lineno"> 7749</span>&#160;        cl::vector&lt;T, Alloc&gt; &amp;container,</div><div class="line"><a name="l07750"></a><span class="lineno"> 7750</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l07751"></a><span class="lineno"> 7751</span>&#160;        cl_map_flags flags,</div><div class="line"><a name="l07752"></a><span class="lineno"> 7752</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07753"></a><span class="lineno"> 7753</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07754"></a><span class="lineno"> 7754</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07755"></a><span class="lineno"> 7755</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07756"></a><span class="lineno"> 7756</span>&#160;        cl_int err = detail::errHandler(::clEnqueueSVMMap(</div><div class="line"><a name="l07757"></a><span class="lineno"> 7757</span>&#160;            object_, blocking, flags, static_cast&lt;void*&gt;(container.data()), container.size(),</div><div class="line"><a name="l07758"></a><span class="lineno"> 7758</span>&#160;            (events != NULL) ? (cl_uint)events-&gt;size() : 0,</div><div class="line"><a name="l07759"></a><span class="lineno"> 7759</span>&#160;            (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*)&amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07760"></a><span class="lineno"> 7760</span>&#160;            (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07761"></a><span class="lineno"> 7761</span>&#160;            __ENQUEUE_MAP_BUFFER_ERR);</div><div class="line"><a name="l07762"></a><span class="lineno"> 7762</span>&#160;</div><div class="line"><a name="l07763"></a><span class="lineno"> 7763</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07764"></a><span class="lineno"> 7764</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07765"></a><span class="lineno"> 7765</span>&#160;</div><div class="line"><a name="l07766"></a><span class="lineno"> 7766</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07767"></a><span class="lineno"> 7767</span>&#160;    }</div><div class="line"><a name="l07768"></a><span class="lineno"> 7768</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l07769"></a><span class="lineno"> 7769</span>&#160;</div><div class="line"><a name="l07770"></a><span class="lineno"> 7770</span>&#160;    cl_int enqueueUnmapMemObject(</div><div class="line"><a name="l07771"></a><span class="lineno"> 7771</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_memory.html">Memory</a>&amp; memory,</div><div class="line"><a name="l07772"></a><span class="lineno"> 7772</span>&#160;        <span class="keywordtype">void</span>* mapped_ptr,</div><div class="line"><a name="l07773"></a><span class="lineno"> 7773</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07774"></a><span class="lineno"> 7774</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07775"></a><span class="lineno"> 7775</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07776"></a><span class="lineno"> 7776</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07777"></a><span class="lineno"> 7777</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07778"></a><span class="lineno"> 7778</span>&#160;            ::clEnqueueUnmapMemObject(</div><div class="line"><a name="l07779"></a><span class="lineno"> 7779</span>&#160;                object_, memory(), mapped_ptr,</div><div class="line"><a name="l07780"></a><span class="lineno"> 7780</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07781"></a><span class="lineno"> 7781</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07782"></a><span class="lineno"> 7782</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07783"></a><span class="lineno"> 7783</span>&#160;            __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l07784"></a><span class="lineno"> 7784</span>&#160;</div><div class="line"><a name="l07785"></a><span class="lineno"> 7785</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07786"></a><span class="lineno"> 7786</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07787"></a><span class="lineno"> 7787</span>&#160;</div><div class="line"><a name="l07788"></a><span class="lineno"> 7788</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07789"></a><span class="lineno"> 7789</span>&#160;    }</div><div class="line"><a name="l07790"></a><span class="lineno"> 7790</span>&#160;</div><div class="line"><a name="l07791"></a><span class="lineno"> 7791</span>&#160;</div><div class="line"><a name="l07792"></a><span class="lineno"> 7792</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l07793"></a><span class="lineno"> 7793</span>&#160;</div><div class="line"><a name="l07797"></a><span class="lineno"> 7797</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l07798"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#affae2ea7a86c23e01c11fbdcdc149300"> 7798</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#affae2ea7a86c23e01c11fbdcdc149300">enqueueUnmapSVM</a>(</div><div class="line"><a name="l07799"></a><span class="lineno"> 7799</span>&#160;        T* ptr,</div><div class="line"><a name="l07800"></a><span class="lineno"> 7800</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07801"></a><span class="lineno"> 7801</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07802"></a><span class="lineno"> 7802</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07803"></a><span class="lineno"> 7803</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07804"></a><span class="lineno"> 7804</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07805"></a><span class="lineno"> 7805</span>&#160;            ::clEnqueueSVMUnmap(</div><div class="line"><a name="l07806"></a><span class="lineno"> 7806</span>&#160;            object_, static_cast&lt;void*&gt;(ptr),</div><div class="line"><a name="l07807"></a><span class="lineno"> 7807</span>&#160;            (events != NULL) ? (cl_uint)events-&gt;size() : 0,</div><div class="line"><a name="l07808"></a><span class="lineno"> 7808</span>&#160;            (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*)&amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07809"></a><span class="lineno"> 7809</span>&#160;            (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07810"></a><span class="lineno"> 7810</span>&#160;            __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l07811"></a><span class="lineno"> 7811</span>&#160;</div><div class="line"><a name="l07812"></a><span class="lineno"> 7812</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07813"></a><span class="lineno"> 7813</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07814"></a><span class="lineno"> 7814</span>&#160;</div><div class="line"><a name="l07815"></a><span class="lineno"> 7815</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07816"></a><span class="lineno"> 7816</span>&#160;    }</div><div class="line"><a name="l07817"></a><span class="lineno"> 7817</span>&#160;</div><div class="line"><a name="l07822"></a><span class="lineno"> 7822</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> D&gt;</div><div class="line"><a name="l07823"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a8818c06a2f28a319d5259be7374c93fc"> 7823</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#a8818c06a2f28a319d5259be7374c93fc">enqueueUnmapSVM</a>(</div><div class="line"><a name="l07824"></a><span class="lineno"> 7824</span>&#160;        cl::pointer&lt;T, D&gt; &amp;ptr,</div><div class="line"><a name="l07825"></a><span class="lineno"> 7825</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07826"></a><span class="lineno"> 7826</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07827"></a><span class="lineno"> 7827</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07828"></a><span class="lineno"> 7828</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07829"></a><span class="lineno"> 7829</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07830"></a><span class="lineno"> 7830</span>&#160;            ::clEnqueueSVMUnmap(</div><div class="line"><a name="l07831"></a><span class="lineno"> 7831</span>&#160;            object_, static_cast&lt;void*&gt;(ptr.get()),</div><div class="line"><a name="l07832"></a><span class="lineno"> 7832</span>&#160;            (events != NULL) ? (cl_uint)events-&gt;size() : 0,</div><div class="line"><a name="l07833"></a><span class="lineno"> 7833</span>&#160;            (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*)&amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07834"></a><span class="lineno"> 7834</span>&#160;            (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07835"></a><span class="lineno"> 7835</span>&#160;            __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l07836"></a><span class="lineno"> 7836</span>&#160;</div><div class="line"><a name="l07837"></a><span class="lineno"> 7837</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07838"></a><span class="lineno"> 7838</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07839"></a><span class="lineno"> 7839</span>&#160;</div><div class="line"><a name="l07840"></a><span class="lineno"> 7840</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07841"></a><span class="lineno"> 7841</span>&#160;    }</div><div class="line"><a name="l07842"></a><span class="lineno"> 7842</span>&#160;</div><div class="line"><a name="l07847"></a><span class="lineno"> 7847</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> Alloc&gt;</div><div class="line"><a name="l07848"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#af7e83f7dec93b2700b8ce4380d81bfcb"> 7848</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#af7e83f7dec93b2700b8ce4380d81bfcb">enqueueUnmapSVM</a>(</div><div class="line"><a name="l07849"></a><span class="lineno"> 7849</span>&#160;        cl::vector&lt;T, Alloc&gt; &amp;container,</div><div class="line"><a name="l07850"></a><span class="lineno"> 7850</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07851"></a><span class="lineno"> 7851</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07852"></a><span class="lineno"> 7852</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07853"></a><span class="lineno"> 7853</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07854"></a><span class="lineno"> 7854</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07855"></a><span class="lineno"> 7855</span>&#160;            ::clEnqueueSVMUnmap(</div><div class="line"><a name="l07856"></a><span class="lineno"> 7856</span>&#160;            object_, static_cast&lt;void*&gt;(container.data()),</div><div class="line"><a name="l07857"></a><span class="lineno"> 7857</span>&#160;            (events != NULL) ? (cl_uint)events-&gt;size() : 0,</div><div class="line"><a name="l07858"></a><span class="lineno"> 7858</span>&#160;            (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*)&amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07859"></a><span class="lineno"> 7859</span>&#160;            (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07860"></a><span class="lineno"> 7860</span>&#160;            __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l07861"></a><span class="lineno"> 7861</span>&#160;</div><div class="line"><a name="l07862"></a><span class="lineno"> 7862</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07863"></a><span class="lineno"> 7863</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07864"></a><span class="lineno"> 7864</span>&#160;</div><div class="line"><a name="l07865"></a><span class="lineno"> 7865</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07866"></a><span class="lineno"> 7866</span>&#160;    }</div><div class="line"><a name="l07867"></a><span class="lineno"> 7867</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l07868"></a><span class="lineno"> 7868</span>&#160;</div><div class="line"><a name="l07869"></a><span class="lineno"> 7869</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l07870"></a><span class="lineno"> 7870</span>&#160;</div><div class="line"><a name="l07881"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a76a3f83c5546fbfa71a38f4ea02e264d"> 7881</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#a76a3f83c5546fbfa71a38f4ea02e264d">enqueueMarkerWithWaitList</a>(</div><div class="line"><a name="l07882"></a><span class="lineno"> 7882</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt; *events = 0,</div><div class="line"><a name="l07883"></a><span class="lineno"> 7883</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a> *event = 0)<span class="keyword"> const</span></div><div class="line"><a name="l07884"></a><span class="lineno"> 7884</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07885"></a><span class="lineno"> 7885</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07886"></a><span class="lineno"> 7886</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07887"></a><span class="lineno"> 7887</span>&#160;            ::clEnqueueMarkerWithWaitList(</div><div class="line"><a name="l07888"></a><span class="lineno"> 7888</span>&#160;                object_,</div><div class="line"><a name="l07889"></a><span class="lineno"> 7889</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07890"></a><span class="lineno"> 7890</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07891"></a><span class="lineno"> 7891</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07892"></a><span class="lineno"> 7892</span>&#160;            __ENQUEUE_MARKER_WAIT_LIST_ERR);</div><div class="line"><a name="l07893"></a><span class="lineno"> 7893</span>&#160;</div><div class="line"><a name="l07894"></a><span class="lineno"> 7894</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07895"></a><span class="lineno"> 7895</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07896"></a><span class="lineno"> 7896</span>&#160;</div><div class="line"><a name="l07897"></a><span class="lineno"> 7897</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07898"></a><span class="lineno"> 7898</span>&#160;    }</div><div class="line"><a name="l07899"></a><span class="lineno"> 7899</span>&#160;</div><div class="line"><a name="l07911"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#acf92038ba0d015824a7488091fc8f5a1"> 7911</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#acf92038ba0d015824a7488091fc8f5a1">enqueueBarrierWithWaitList</a>(</div><div class="line"><a name="l07912"></a><span class="lineno"> 7912</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt; *events = 0,</div><div class="line"><a name="l07913"></a><span class="lineno"> 7913</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a> *event = 0)<span class="keyword"> const</span></div><div class="line"><a name="l07914"></a><span class="lineno"> 7914</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07915"></a><span class="lineno"> 7915</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07916"></a><span class="lineno"> 7916</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07917"></a><span class="lineno"> 7917</span>&#160;            ::clEnqueueBarrierWithWaitList(</div><div class="line"><a name="l07918"></a><span class="lineno"> 7918</span>&#160;                object_,</div><div class="line"><a name="l07919"></a><span class="lineno"> 7919</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07920"></a><span class="lineno"> 7920</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07921"></a><span class="lineno"> 7921</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07922"></a><span class="lineno"> 7922</span>&#160;            __ENQUEUE_BARRIER_WAIT_LIST_ERR);</div><div class="line"><a name="l07923"></a><span class="lineno"> 7923</span>&#160;</div><div class="line"><a name="l07924"></a><span class="lineno"> 7924</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07925"></a><span class="lineno"> 7925</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07926"></a><span class="lineno"> 7926</span>&#160;</div><div class="line"><a name="l07927"></a><span class="lineno"> 7927</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07928"></a><span class="lineno"> 7928</span>&#160;    }</div><div class="line"><a name="l07929"></a><span class="lineno"> 7929</span>&#160;    </div><div class="line"><a name="l07934"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a3a9a4f084dc7634d3c73f5bf7f680b65"> 7934</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#a3a9a4f084dc7634d3c73f5bf7f680b65">enqueueMigrateMemObjects</a>(</div><div class="line"><a name="l07935"></a><span class="lineno"> 7935</span>&#160;        <span class="keyword">const</span> vector&lt;Memory&gt; &amp;memObjects,</div><div class="line"><a name="l07936"></a><span class="lineno"> 7936</span>&#160;        cl_mem_migration_flags flags,</div><div class="line"><a name="l07937"></a><span class="lineno"> 7937</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07938"></a><span class="lineno"> 7938</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL</div><div class="line"><a name="l07939"></a><span class="lineno"> 7939</span>&#160;        )<span class="keyword"> const</span></div><div class="line"><a name="l07940"></a><span class="lineno"> 7940</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07941"></a><span class="lineno"> 7941</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07942"></a><span class="lineno"> 7942</span>&#160;        </div><div class="line"><a name="l07943"></a><span class="lineno"> 7943</span>&#160;        vector&lt;cl_mem&gt; localMemObjects(memObjects.size());</div><div class="line"><a name="l07944"></a><span class="lineno"> 7944</span>&#160;</div><div class="line"><a name="l07945"></a><span class="lineno"> 7945</span>&#160;        <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i &lt; (int)memObjects.size(); ++i ) {</div><div class="line"><a name="l07946"></a><span class="lineno"> 7946</span>&#160;            localMemObjects[i] = memObjects[i]();</div><div class="line"><a name="l07947"></a><span class="lineno"> 7947</span>&#160;        }</div><div class="line"><a name="l07948"></a><span class="lineno"> 7948</span>&#160;</div><div class="line"><a name="l07949"></a><span class="lineno"> 7949</span>&#160;</div><div class="line"><a name="l07950"></a><span class="lineno"> 7950</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07951"></a><span class="lineno"> 7951</span>&#160;            ::clEnqueueMigrateMemObjects(</div><div class="line"><a name="l07952"></a><span class="lineno"> 7952</span>&#160;                object_, </div><div class="line"><a name="l07953"></a><span class="lineno"> 7953</span>&#160;                (cl_uint)memObjects.size(), </div><div class="line"><a name="l07954"></a><span class="lineno"> 7954</span>&#160;                localMemObjects.data(),</div><div class="line"><a name="l07955"></a><span class="lineno"> 7955</span>&#160;                flags,</div><div class="line"><a name="l07956"></a><span class="lineno"> 7956</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07957"></a><span class="lineno"> 7957</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07958"></a><span class="lineno"> 7958</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07959"></a><span class="lineno"> 7959</span>&#160;            __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l07960"></a><span class="lineno"> 7960</span>&#160;</div><div class="line"><a name="l07961"></a><span class="lineno"> 7961</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07962"></a><span class="lineno"> 7962</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07963"></a><span class="lineno"> 7963</span>&#160;</div><div class="line"><a name="l07964"></a><span class="lineno"> 7964</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07965"></a><span class="lineno"> 7965</span>&#160;    }</div><div class="line"><a name="l07966"></a><span class="lineno"> 7966</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l07967"></a><span class="lineno"> 7967</span>&#160;</div><div class="line"><a name="l07968"></a><span class="lineno"> 7968</span>&#160;    cl_int enqueueNDRangeKernel(</div><div class="line"><a name="l07969"></a><span class="lineno"> 7969</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_kernel.html">Kernel</a>&amp; kernel,</div><div class="line"><a name="l07970"></a><span class="lineno"> 7970</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a>&amp; offset,</div><div class="line"><a name="l07971"></a><span class="lineno"> 7971</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a>&amp; global,</div><div class="line"><a name="l07972"></a><span class="lineno"> 7972</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a>&amp; local = NullRange,</div><div class="line"><a name="l07973"></a><span class="lineno"> 7973</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07974"></a><span class="lineno"> 7974</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l07975"></a><span class="lineno"> 7975</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l07976"></a><span class="lineno"> 7976</span>&#160;        cl_event tmp;</div><div class="line"><a name="l07977"></a><span class="lineno"> 7977</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l07978"></a><span class="lineno"> 7978</span>&#160;            ::clEnqueueNDRangeKernel(</div><div class="line"><a name="l07979"></a><span class="lineno"> 7979</span>&#160;                object_, kernel(), (cl_uint) global.<a class="code" href="classcl_1_1_n_d_range.html#a5684b0c2c648557ef31e6b212e8c4939">dimensions</a>(),</div><div class="line"><a name="l07980"></a><span class="lineno"> 7980</span>&#160;                offset.<a class="code" href="classcl_1_1_n_d_range.html#a5684b0c2c648557ef31e6b212e8c4939">dimensions</a>() != 0 ? (<span class="keyword">const</span> size_type*) offset : NULL,</div><div class="line"><a name="l07981"></a><span class="lineno"> 7981</span>&#160;                (<span class="keyword">const</span> size_type*) global,</div><div class="line"><a name="l07982"></a><span class="lineno"> 7982</span>&#160;                local.<a class="code" href="classcl_1_1_n_d_range.html#a5684b0c2c648557ef31e6b212e8c4939">dimensions</a>() != 0 ? (<span class="keyword">const</span> size_type*) local : NULL,</div><div class="line"><a name="l07983"></a><span class="lineno"> 7983</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l07984"></a><span class="lineno"> 7984</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l07985"></a><span class="lineno"> 7985</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l07986"></a><span class="lineno"> 7986</span>&#160;            __ENQUEUE_NDRANGE_KERNEL_ERR);</div><div class="line"><a name="l07987"></a><span class="lineno"> 7987</span>&#160;</div><div class="line"><a name="l07988"></a><span class="lineno"> 7988</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l07989"></a><span class="lineno"> 7989</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l07990"></a><span class="lineno"> 7990</span>&#160;</div><div class="line"><a name="l07991"></a><span class="lineno"> 7991</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l07992"></a><span class="lineno"> 7992</span>&#160;    }</div><div class="line"><a name="l07993"></a><span class="lineno"> 7993</span>&#160;</div><div class="line"><a name="l07994"></a><span class="lineno"> 7994</span>&#160;<span class="preprocessor">#if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS)</span></div><div class="line"><a name="l07995"></a><span class="lineno"> 7995</span>&#160;    CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int enqueueTask(</div><div class="line"><a name="l07996"></a><span class="lineno"> 7996</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_kernel.html">Kernel</a>&amp; kernel,</div><div class="line"><a name="l07997"></a><span class="lineno"> 7997</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l07998"></a><span class="lineno"> 7998</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL) <span class="keyword">const</span> CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED</div><div class="line"><a name="l07999"></a><span class="lineno"> 7999</span>&#160;    {</div><div class="line"><a name="l08000"></a><span class="lineno"> 8000</span>&#160;        cl_event tmp;</div><div class="line"><a name="l08001"></a><span class="lineno"> 8001</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l08002"></a><span class="lineno"> 8002</span>&#160;            ::clEnqueueTask(</div><div class="line"><a name="l08003"></a><span class="lineno"> 8003</span>&#160;                object_, kernel(),</div><div class="line"><a name="l08004"></a><span class="lineno"> 8004</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l08005"></a><span class="lineno"> 8005</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l08006"></a><span class="lineno"> 8006</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l08007"></a><span class="lineno"> 8007</span>&#160;            __ENQUEUE_TASK_ERR);</div><div class="line"><a name="l08008"></a><span class="lineno"> 8008</span>&#160;</div><div class="line"><a name="l08009"></a><span class="lineno"> 8009</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l08010"></a><span class="lineno"> 8010</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l08011"></a><span class="lineno"> 8011</span>&#160;</div><div class="line"><a name="l08012"></a><span class="lineno"> 8012</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l08013"></a><span class="lineno"> 8013</span>&#160;    }</div><div class="line"><a name="l08014"></a><span class="lineno"> 8014</span>&#160;<span class="preprocessor">#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS)</span></div><div class="line"><a name="l08015"></a><span class="lineno"> 8015</span>&#160;</div><div class="line"><a name="l08016"></a><span class="lineno"> 8016</span>&#160;    cl_int enqueueNativeKernel(</div><div class="line"><a name="l08017"></a><span class="lineno"> 8017</span>&#160;        <span class="keywordtype">void</span> (CL_CALLBACK *userFptr)(<span class="keywordtype">void</span> *),</div><div class="line"><a name="l08018"></a><span class="lineno"> 8018</span>&#160;        std::pair&lt;void*, size_type&gt; args,</div><div class="line"><a name="l08019"></a><span class="lineno"> 8019</span>&#160;        <span class="keyword">const</span> vector&lt;Memory&gt;* mem_objects = NULL,</div><div class="line"><a name="l08020"></a><span class="lineno"> 8020</span>&#160;        <span class="keyword">const</span> vector&lt;const void*&gt;* mem_locs = NULL,</div><div class="line"><a name="l08021"></a><span class="lineno"> 8021</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08022"></a><span class="lineno"> 8022</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l08023"></a><span class="lineno"> 8023</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l08024"></a><span class="lineno"> 8024</span>&#160;        size_type elements = 0;</div><div class="line"><a name="l08025"></a><span class="lineno"> 8025</span>&#160;        <span class="keywordflow">if</span> (mem_objects != NULL) {</div><div class="line"><a name="l08026"></a><span class="lineno"> 8026</span>&#160;            elements = mem_objects-&gt;size();</div><div class="line"><a name="l08027"></a><span class="lineno"> 8027</span>&#160;        }</div><div class="line"><a name="l08028"></a><span class="lineno"> 8028</span>&#160;        vector&lt;cl_mem&gt; mems(elements);</div><div class="line"><a name="l08029"></a><span class="lineno"> 8029</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; elements; i++) {</div><div class="line"><a name="l08030"></a><span class="lineno"> 8030</span>&#160;            mems[i] = ((*mem_objects)[i])();</div><div class="line"><a name="l08031"></a><span class="lineno"> 8031</span>&#160;        }</div><div class="line"><a name="l08032"></a><span class="lineno"> 8032</span>&#160;        </div><div class="line"><a name="l08033"></a><span class="lineno"> 8033</span>&#160;        cl_event tmp;</div><div class="line"><a name="l08034"></a><span class="lineno"> 8034</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l08035"></a><span class="lineno"> 8035</span>&#160;            ::clEnqueueNativeKernel(</div><div class="line"><a name="l08036"></a><span class="lineno"> 8036</span>&#160;                object_, userFptr, args.first, args.second,</div><div class="line"><a name="l08037"></a><span class="lineno"> 8037</span>&#160;                (mem_objects != NULL) ? (cl_uint) mem_objects-&gt;size() : 0,</div><div class="line"><a name="l08038"></a><span class="lineno"> 8038</span>&#160;                mems.data(),</div><div class="line"><a name="l08039"></a><span class="lineno"> 8039</span>&#160;                (mem_locs != NULL &amp;&amp; mem_locs-&gt;size() &gt; 0) ? (<span class="keyword">const</span> <span class="keywordtype">void</span> **) &amp;mem_locs-&gt;front() : NULL,</div><div class="line"><a name="l08040"></a><span class="lineno"> 8040</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l08041"></a><span class="lineno"> 8041</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l08042"></a><span class="lineno"> 8042</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l08043"></a><span class="lineno"> 8043</span>&#160;            __ENQUEUE_NATIVE_KERNEL);</div><div class="line"><a name="l08044"></a><span class="lineno"> 8044</span>&#160;</div><div class="line"><a name="l08045"></a><span class="lineno"> 8045</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l08046"></a><span class="lineno"> 8046</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l08047"></a><span class="lineno"> 8047</span>&#160;</div><div class="line"><a name="l08048"></a><span class="lineno"> 8048</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l08049"></a><span class="lineno"> 8049</span>&#160;    }</div><div class="line"><a name="l08050"></a><span class="lineno"> 8050</span>&#160;</div><div class="line"><a name="l08054"></a><span class="lineno"> 8054</span>&#160;<span class="preprocessor">#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)</span></div><div class="line"><a name="l08055"></a><span class="lineno"> 8055</span>&#160;    CL_EXT_PREFIX__VERSION_1_1_DEPRECATED </div><div class="line"><a name="l08056"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#af1e9e85e0b60c7c852d8a902df064263"> 8056</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#af1e9e85e0b60c7c852d8a902df064263">enqueueMarker</a>(<a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL) <span class="keyword">const</span> CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED</div><div class="line"><a name="l08057"></a><span class="lineno"> 8057</span>&#160;    {</div><div class="line"><a name="l08058"></a><span class="lineno"> 8058</span>&#160;        cl_event tmp;</div><div class="line"><a name="l08059"></a><span class="lineno"> 8059</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l08060"></a><span class="lineno"> 8060</span>&#160;            ::clEnqueueMarker(</div><div class="line"><a name="l08061"></a><span class="lineno"> 8061</span>&#160;                object_, </div><div class="line"><a name="l08062"></a><span class="lineno"> 8062</span>&#160;                (event != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l08063"></a><span class="lineno"> 8063</span>&#160;            __ENQUEUE_MARKER_ERR);</div><div class="line"><a name="l08064"></a><span class="lineno"> 8064</span>&#160;</div><div class="line"><a name="l08065"></a><span class="lineno"> 8065</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l08066"></a><span class="lineno"> 8066</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l08067"></a><span class="lineno"> 8067</span>&#160;</div><div class="line"><a name="l08068"></a><span class="lineno"> 8068</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l08069"></a><span class="lineno"> 8069</span>&#160;    }</div><div class="line"><a name="l08070"></a><span class="lineno"> 8070</span>&#160;</div><div class="line"><a name="l08071"></a><span class="lineno"> 8071</span>&#160;    CL_EXT_PREFIX__VERSION_1_1_DEPRECATED</div><div class="line"><a name="l08072"></a><span class="lineno"> 8072</span>&#160;    cl_int enqueueWaitForEvents(<span class="keyword">const</span> vector&lt;Event&gt;&amp; events) <span class="keyword">const</span> CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED</div><div class="line"><a name="l08073"></a><span class="lineno"> 8073</span>&#160;    {</div><div class="line"><a name="l08074"></a><span class="lineno"> 8074</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l08075"></a><span class="lineno"> 8075</span>&#160;            ::clEnqueueWaitForEvents(</div><div class="line"><a name="l08076"></a><span class="lineno"> 8076</span>&#160;                object_,</div><div class="line"><a name="l08077"></a><span class="lineno"> 8077</span>&#160;                (cl_uint) events.size(),</div><div class="line"><a name="l08078"></a><span class="lineno"> 8078</span>&#160;                events.size() &gt; 0 ? (<span class="keyword">const</span> cl_event*) &amp;events.front() : NULL),</div><div class="line"><a name="l08079"></a><span class="lineno"> 8079</span>&#160;            __ENQUEUE_WAIT_FOR_EVENTS_ERR);</div><div class="line"><a name="l08080"></a><span class="lineno"> 8080</span>&#160;    }</div><div class="line"><a name="l08081"></a><span class="lineno"> 8081</span>&#160;<span class="preprocessor">#endif // defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)</span></div><div class="line"><a name="l08082"></a><span class="lineno"> 8082</span>&#160;</div><div class="line"><a name="l08083"></a><span class="lineno"> 8083</span>&#160;    cl_int enqueueAcquireGLObjects(</div><div class="line"><a name="l08084"></a><span class="lineno"> 8084</span>&#160;         <span class="keyword">const</span> vector&lt;Memory&gt;* mem_objects = NULL,</div><div class="line"><a name="l08085"></a><span class="lineno"> 8085</span>&#160;         <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08086"></a><span class="lineno"> 8086</span>&#160;         <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l08087"></a><span class="lineno"> 8087</span>&#160;<span class="keyword">     </span>{</div><div class="line"><a name="l08088"></a><span class="lineno"> 8088</span>&#160;        cl_event tmp;</div><div class="line"><a name="l08089"></a><span class="lineno"> 8089</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l08090"></a><span class="lineno"> 8090</span>&#160;             ::clEnqueueAcquireGLObjects(</div><div class="line"><a name="l08091"></a><span class="lineno"> 8091</span>&#160;                 object_,</div><div class="line"><a name="l08092"></a><span class="lineno"> 8092</span>&#160;                 (mem_objects != NULL) ? (cl_uint) mem_objects-&gt;size() : 0,</div><div class="line"><a name="l08093"></a><span class="lineno"> 8093</span>&#160;                 (mem_objects != NULL &amp;&amp; mem_objects-&gt;size() &gt; 0) ? (<span class="keyword">const</span> cl_mem *) &amp;mem_objects-&gt;front(): NULL,</div><div class="line"><a name="l08094"></a><span class="lineno"> 8094</span>&#160;                 (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l08095"></a><span class="lineno"> 8095</span>&#160;                 (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l08096"></a><span class="lineno"> 8096</span>&#160;                 (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l08097"></a><span class="lineno"> 8097</span>&#160;             __ENQUEUE_ACQUIRE_GL_ERR);</div><div class="line"><a name="l08098"></a><span class="lineno"> 8098</span>&#160;</div><div class="line"><a name="l08099"></a><span class="lineno"> 8099</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l08100"></a><span class="lineno"> 8100</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l08101"></a><span class="lineno"> 8101</span>&#160;</div><div class="line"><a name="l08102"></a><span class="lineno"> 8102</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l08103"></a><span class="lineno"> 8103</span>&#160;     }</div><div class="line"><a name="l08104"></a><span class="lineno"> 8104</span>&#160;</div><div class="line"><a name="l08105"></a><span class="lineno"> 8105</span>&#160;    cl_int enqueueReleaseGLObjects(</div><div class="line"><a name="l08106"></a><span class="lineno"> 8106</span>&#160;         <span class="keyword">const</span> vector&lt;Memory&gt;* mem_objects = NULL,</div><div class="line"><a name="l08107"></a><span class="lineno"> 8107</span>&#160;         <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08108"></a><span class="lineno"> 8108</span>&#160;         <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l08109"></a><span class="lineno"> 8109</span>&#160;<span class="keyword">     </span>{</div><div class="line"><a name="l08110"></a><span class="lineno"> 8110</span>&#160;        cl_event tmp;</div><div class="line"><a name="l08111"></a><span class="lineno"> 8111</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l08112"></a><span class="lineno"> 8112</span>&#160;             ::clEnqueueReleaseGLObjects(</div><div class="line"><a name="l08113"></a><span class="lineno"> 8113</span>&#160;                 object_,</div><div class="line"><a name="l08114"></a><span class="lineno"> 8114</span>&#160;                 (mem_objects != NULL) ? (cl_uint) mem_objects-&gt;size() : 0,</div><div class="line"><a name="l08115"></a><span class="lineno"> 8115</span>&#160;                 (mem_objects != NULL &amp;&amp; mem_objects-&gt;size() &gt; 0) ? (<span class="keyword">const</span> cl_mem *) &amp;mem_objects-&gt;front(): NULL,</div><div class="line"><a name="l08116"></a><span class="lineno"> 8116</span>&#160;                 (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l08117"></a><span class="lineno"> 8117</span>&#160;                 (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l08118"></a><span class="lineno"> 8118</span>&#160;                 (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l08119"></a><span class="lineno"> 8119</span>&#160;             __ENQUEUE_RELEASE_GL_ERR);</div><div class="line"><a name="l08120"></a><span class="lineno"> 8120</span>&#160;</div><div class="line"><a name="l08121"></a><span class="lineno"> 8121</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l08122"></a><span class="lineno"> 8122</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l08123"></a><span class="lineno"> 8123</span>&#160;</div><div class="line"><a name="l08124"></a><span class="lineno"> 8124</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l08125"></a><span class="lineno"> 8125</span>&#160;     }</div><div class="line"><a name="l08126"></a><span class="lineno"> 8126</span>&#160;</div><div class="line"><a name="l08127"></a><span class="lineno"> 8127</span>&#160;<span class="preprocessor">#if defined (CL_HPP_USE_DX_INTEROP)</span></div><div class="line"><a name="l08128"></a><span class="lineno"> 8128</span>&#160;<span class="keyword">typedef</span> CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)(</div><div class="line"><a name="l08129"></a><span class="lineno"> 8129</span>&#160;    cl_command_queue command_queue, cl_uint num_objects,</div><div class="line"><a name="l08130"></a><span class="lineno"> 8130</span>&#160;    <span class="keyword">const</span> cl_mem* mem_objects, cl_uint num_events_in_wait_list,</div><div class="line"><a name="l08131"></a><span class="lineno"> 8131</span>&#160;    <span class="keyword">const</span> cl_event* event_wait_list, cl_event* event);</div><div class="line"><a name="l08132"></a><span class="lineno"> 8132</span>&#160;<span class="keyword">typedef</span> CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)(</div><div class="line"><a name="l08133"></a><span class="lineno"> 8133</span>&#160;    cl_command_queue command_queue, cl_uint num_objects,</div><div class="line"><a name="l08134"></a><span class="lineno"> 8134</span>&#160;    <span class="keyword">const</span> cl_mem* mem_objects,  cl_uint num_events_in_wait_list,</div><div class="line"><a name="l08135"></a><span class="lineno"> 8135</span>&#160;    <span class="keyword">const</span> cl_event* event_wait_list, cl_event* event);</div><div class="line"><a name="l08136"></a><span class="lineno"> 8136</span>&#160;</div><div class="line"><a name="l08137"></a><span class="lineno"> 8137</span>&#160;    cl_int enqueueAcquireD3D10Objects(</div><div class="line"><a name="l08138"></a><span class="lineno"> 8138</span>&#160;         <span class="keyword">const</span> vector&lt;Memory&gt;* mem_objects = NULL,</div><div class="line"><a name="l08139"></a><span class="lineno"> 8139</span>&#160;         <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08140"></a><span class="lineno"> 8140</span>&#160;         <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l08141"></a><span class="lineno"> 8141</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l08142"></a><span class="lineno"> 8142</span>&#160;        <span class="keyword">static</span> PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL;</div><div class="line"><a name="l08143"></a><span class="lineno"> 8143</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l08144"></a><span class="lineno"> 8144</span>&#160;        cl_context context = getInfo&lt;CL_QUEUE_CONTEXT&gt;();</div><div class="line"><a name="l08145"></a><span class="lineno"> 8145</span>&#160;        <a class="code" href="classcl_1_1_device.html">cl::Device</a> device(getInfo&lt;CL_QUEUE_DEVICE&gt;());</div><div class="line"><a name="l08146"></a><span class="lineno"> 8146</span>&#160;        cl_platform_id platform = device.getInfo&lt;CL_DEVICE_PLATFORM&gt;();</div><div class="line"><a name="l08147"></a><span class="lineno"> 8147</span>&#160;        CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueAcquireD3D10ObjectsKHR);</div><div class="line"><a name="l08148"></a><span class="lineno"> 8148</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l08149"></a><span class="lineno"> 8149</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l08150"></a><span class="lineno"> 8150</span>&#160;        CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueAcquireD3D10ObjectsKHR);</div><div class="line"><a name="l08151"></a><span class="lineno"> 8151</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l08152"></a><span class="lineno"> 8152</span>&#160;        </div><div class="line"><a name="l08153"></a><span class="lineno"> 8153</span>&#160;        cl_event tmp;</div><div class="line"><a name="l08154"></a><span class="lineno"> 8154</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l08155"></a><span class="lineno"> 8155</span>&#160;             pfn_clEnqueueAcquireD3D10ObjectsKHR(</div><div class="line"><a name="l08156"></a><span class="lineno"> 8156</span>&#160;                 object_,</div><div class="line"><a name="l08157"></a><span class="lineno"> 8157</span>&#160;                 (mem_objects != NULL) ? (cl_uint) mem_objects-&gt;size() : 0,</div><div class="line"><a name="l08158"></a><span class="lineno"> 8158</span>&#160;                 (mem_objects != NULL &amp;&amp; mem_objects-&gt;size() &gt; 0) ? (<span class="keyword">const</span> cl_mem *) &amp;mem_objects-&gt;front(): NULL,</div><div class="line"><a name="l08159"></a><span class="lineno"> 8159</span>&#160;                 (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l08160"></a><span class="lineno"> 8160</span>&#160;                 (events != NULL) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l08161"></a><span class="lineno"> 8161</span>&#160;                 (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l08162"></a><span class="lineno"> 8162</span>&#160;             __ENQUEUE_ACQUIRE_GL_ERR);</div><div class="line"><a name="l08163"></a><span class="lineno"> 8163</span>&#160;</div><div class="line"><a name="l08164"></a><span class="lineno"> 8164</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l08165"></a><span class="lineno"> 8165</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l08166"></a><span class="lineno"> 8166</span>&#160;</div><div class="line"><a name="l08167"></a><span class="lineno"> 8167</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l08168"></a><span class="lineno"> 8168</span>&#160;     }</div><div class="line"><a name="l08169"></a><span class="lineno"> 8169</span>&#160;</div><div class="line"><a name="l08170"></a><span class="lineno"> 8170</span>&#160;    cl_int enqueueReleaseD3D10Objects(</div><div class="line"><a name="l08171"></a><span class="lineno"> 8171</span>&#160;         <span class="keyword">const</span> vector&lt;Memory&gt;* mem_objects = NULL,</div><div class="line"><a name="l08172"></a><span class="lineno"> 8172</span>&#160;         <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08173"></a><span class="lineno"> 8173</span>&#160;         <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l08174"></a><span class="lineno"> 8174</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l08175"></a><span class="lineno"> 8175</span>&#160;        <span class="keyword">static</span> PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL;</div><div class="line"><a name="l08176"></a><span class="lineno"> 8176</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l08177"></a><span class="lineno"> 8177</span>&#160;        cl_context context = getInfo&lt;CL_QUEUE_CONTEXT&gt;();</div><div class="line"><a name="l08178"></a><span class="lineno"> 8178</span>&#160;        <a class="code" href="classcl_1_1_device.html">cl::Device</a> device(getInfo&lt;CL_QUEUE_DEVICE&gt;());</div><div class="line"><a name="l08179"></a><span class="lineno"> 8179</span>&#160;        cl_platform_id platform = device.getInfo&lt;CL_DEVICE_PLATFORM&gt;();</div><div class="line"><a name="l08180"></a><span class="lineno"> 8180</span>&#160;        CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueReleaseD3D10ObjectsKHR);</div><div class="line"><a name="l08181"></a><span class="lineno"> 8181</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 120</span></div><div class="line"><a name="l08182"></a><span class="lineno"> 8182</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l08183"></a><span class="lineno"> 8183</span>&#160;        CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueReleaseD3D10ObjectsKHR);</div><div class="line"><a name="l08184"></a><span class="lineno"> 8184</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l08185"></a><span class="lineno"> 8185</span>&#160;</div><div class="line"><a name="l08186"></a><span class="lineno"> 8186</span>&#160;        cl_event tmp;</div><div class="line"><a name="l08187"></a><span class="lineno"> 8187</span>&#160;        cl_int err = detail::errHandler(</div><div class="line"><a name="l08188"></a><span class="lineno"> 8188</span>&#160;            pfn_clEnqueueReleaseD3D10ObjectsKHR(</div><div class="line"><a name="l08189"></a><span class="lineno"> 8189</span>&#160;                object_,</div><div class="line"><a name="l08190"></a><span class="lineno"> 8190</span>&#160;                (mem_objects != NULL) ? (cl_uint) mem_objects-&gt;size() : 0,</div><div class="line"><a name="l08191"></a><span class="lineno"> 8191</span>&#160;                (mem_objects != NULL &amp;&amp; mem_objects-&gt;size() &gt; 0) ? (<span class="keyword">const</span> cl_mem *) &amp;mem_objects-&gt;front(): NULL,</div><div class="line"><a name="l08192"></a><span class="lineno"> 8192</span>&#160;                (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l08193"></a><span class="lineno"> 8193</span>&#160;                (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l08194"></a><span class="lineno"> 8194</span>&#160;                (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l08195"></a><span class="lineno"> 8195</span>&#160;            __ENQUEUE_RELEASE_GL_ERR);</div><div class="line"><a name="l08196"></a><span class="lineno"> 8196</span>&#160;</div><div class="line"><a name="l08197"></a><span class="lineno"> 8197</span>&#160;        <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l08198"></a><span class="lineno"> 8198</span>&#160;            *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l08199"></a><span class="lineno"> 8199</span>&#160;</div><div class="line"><a name="l08200"></a><span class="lineno"> 8200</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l08201"></a><span class="lineno"> 8201</span>&#160;    }</div><div class="line"><a name="l08202"></a><span class="lineno"> 8202</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l08203"></a><span class="lineno"> 8203</span>&#160;</div><div class="line"><a name="l08207"></a><span class="lineno"> 8207</span>&#160;<span class="preprocessor">#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS)</span></div><div class="line"><a name="l08208"></a><span class="lineno"> 8208</span>&#160;    CL_EXT_PREFIX__VERSION_1_1_DEPRECATED</div><div class="line"><a name="l08209"></a><span class="lineno"><a class="line" href="classcl_1_1_command_queue.html#a93bd22a376266778c64437aab1401170"> 8209</a></span>&#160;    cl_int <a class="code" href="classcl_1_1_command_queue.html#a93bd22a376266778c64437aab1401170">enqueueBarrier</a>() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED</div><div class="line"><a name="l08210"></a><span class="lineno"> 8210</span>&#160;    {</div><div class="line"><a name="l08211"></a><span class="lineno"> 8211</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l08212"></a><span class="lineno"> 8212</span>&#160;            ::clEnqueueBarrier(object_),</div><div class="line"><a name="l08213"></a><span class="lineno"> 8213</span>&#160;            __ENQUEUE_BARRIER_ERR);</div><div class="line"><a name="l08214"></a><span class="lineno"> 8214</span>&#160;    }</div><div class="line"><a name="l08215"></a><span class="lineno"> 8215</span>&#160;<span class="preprocessor">#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS</span></div><div class="line"><a name="l08216"></a><span class="lineno"> 8216</span>&#160;</div><div class="line"><a name="l08217"></a><span class="lineno"> 8217</span>&#160;    cl_int flush()<span class="keyword"> const</span></div><div class="line"><a name="l08218"></a><span class="lineno"> 8218</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l08219"></a><span class="lineno"> 8219</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(::clFlush(object_), __FLUSH_ERR);</div><div class="line"><a name="l08220"></a><span class="lineno"> 8220</span>&#160;    }</div><div class="line"><a name="l08221"></a><span class="lineno"> 8221</span>&#160;</div><div class="line"><a name="l08222"></a><span class="lineno"> 8222</span>&#160;    cl_int finish()<span class="keyword"> const</span></div><div class="line"><a name="l08223"></a><span class="lineno"> 8223</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l08224"></a><span class="lineno"> 8224</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(::clFinish(object_), __FINISH_ERR);</div><div class="line"><a name="l08225"></a><span class="lineno"> 8225</span>&#160;    }</div><div class="line"><a name="l08226"></a><span class="lineno"> 8226</span>&#160;}; <span class="comment">// CommandQueue</span></div><div class="line"><a name="l08227"></a><span class="lineno"> 8227</span>&#160;</div><div class="line"><a name="l08228"></a><span class="lineno"> 8228</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag CommandQueue::default_initialized_;</div><div class="line"><a name="l08229"></a><span class="lineno"> 8229</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> CommandQueue::default_;</div><div class="line"><a name="l08230"></a><span class="lineno"> 8230</span>&#160;CL_HPP_DEFINE_STATIC_MEMBER_ cl_int CommandQueue::default_error_ = CL_SUCCESS;</div><div class="line"><a name="l08231"></a><span class="lineno"> 8231</span>&#160;</div><div class="line"><a name="l08232"></a><span class="lineno"> 8232</span>&#160;</div><div class="line"><a name="l08233"></a><span class="lineno"> 8233</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l08234"></a><span class="lineno"> 8234</span>&#160;<span class="keyword">enum class</span> DeviceQueueProperties : cl_command_queue_properties</div><div class="line"><a name="l08235"></a><span class="lineno"> 8235</span>&#160;{</div><div class="line"><a name="l08236"></a><span class="lineno"> 8236</span>&#160;    None = 0,</div><div class="line"><a name="l08237"></a><span class="lineno"> 8237</span>&#160;    Profiling = CL_QUEUE_PROFILING_ENABLE,</div><div class="line"><a name="l08238"></a><span class="lineno"> 8238</span>&#160;};</div><div class="line"><a name="l08239"></a><span class="lineno"> 8239</span>&#160;</div><div class="line"><a name="l08240"></a><span class="lineno"> 8240</span>&#160;<span class="keyword">inline</span> DeviceQueueProperties operator|(DeviceQueueProperties lhs, DeviceQueueProperties rhs)</div><div class="line"><a name="l08241"></a><span class="lineno"> 8241</span>&#160;{</div><div class="line"><a name="l08242"></a><span class="lineno"> 8242</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>DeviceQueueProperties<span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>cl_command_queue_properties<span class="keyword">&gt;</span>(lhs) | static_cast&lt;cl_command_queue_properties&gt;(rhs));</div><div class="line"><a name="l08243"></a><span class="lineno"> 8243</span>&#160;}</div><div class="line"><a name="l08244"></a><span class="lineno"> 8244</span>&#160;</div><div class="line"><a name="l08248"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html"> 8248</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a> : <span class="keyword">public</span> <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper</a>&lt;cl_command_queue&gt;</div><div class="line"><a name="l08249"></a><span class="lineno"> 8249</span>&#160;{</div><div class="line"><a name="l08250"></a><span class="lineno"> 8250</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l08251"></a><span class="lineno"> 8251</span>&#160;</div><div class="line"><a name="l08255"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#ab58e477e1a9bf099e1faf77565e80856"> 8255</a></span>&#160;    <a class="code" href="classcl_1_1_device_command_queue.html#ab58e477e1a9bf099e1faf77565e80856">DeviceCommandQueue</a>() { }</div><div class="line"><a name="l08256"></a><span class="lineno"> 8256</span>&#160;</div><div class="line"><a name="l08260"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#a796862188d423d2cfd1e90c4fafc5d5f"> 8260</a></span>&#160;    <a class="code" href="classcl_1_1_device_command_queue.html#a796862188d423d2cfd1e90c4fafc5d5f">DeviceCommandQueue</a>(DeviceQueueProperties properties, cl_int* err = NULL)</div><div class="line"><a name="l08261"></a><span class="lineno"> 8261</span>&#160;    {</div><div class="line"><a name="l08262"></a><span class="lineno"> 8262</span>&#160;        cl_int error;</div><div class="line"><a name="l08263"></a><span class="lineno"> 8263</span>&#160;        <a class="code" href="classcl_1_1_context.html">cl::Context</a> context = <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">cl::Context::getDefault</a>();</div><div class="line"><a name="l08264"></a><span class="lineno"> 8264</span>&#160;        <a class="code" href="classcl_1_1_device.html">cl::Device</a> device = <a class="code" href="classcl_1_1_device.html#a7428cf3cdccc824c414730ed65e40a0d">cl::Device::getDefault</a>();</div><div class="line"><a name="l08265"></a><span class="lineno"> 8265</span>&#160;</div><div class="line"><a name="l08266"></a><span class="lineno"> 8266</span>&#160;        cl_command_queue_properties mergedProperties =</div><div class="line"><a name="l08267"></a><span class="lineno"> 8267</span>&#160;            CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | <span class="keyword">static_cast&lt;</span>cl_command_queue_properties<span class="keyword">&gt;</span>(properties);</div><div class="line"><a name="l08268"></a><span class="lineno"> 8268</span>&#160;</div><div class="line"><a name="l08269"></a><span class="lineno"> 8269</span>&#160;        cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l08270"></a><span class="lineno"> 8270</span>&#160;            CL_QUEUE_PROPERTIES, mergedProperties, 0 };</div><div class="line"><a name="l08271"></a><span class="lineno"> 8271</span>&#160;        object_ = ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l08272"></a><span class="lineno"> 8272</span>&#160;            context(), device(), queue_properties, &amp;error);</div><div class="line"><a name="l08273"></a><span class="lineno"> 8273</span>&#160;</div><div class="line"><a name="l08274"></a><span class="lineno"> 8274</span>&#160;        detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l08275"></a><span class="lineno"> 8275</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08276"></a><span class="lineno"> 8276</span>&#160;            *err = error;</div><div class="line"><a name="l08277"></a><span class="lineno"> 8277</span>&#160;        }</div><div class="line"><a name="l08278"></a><span class="lineno"> 8278</span>&#160;    }</div><div class="line"><a name="l08279"></a><span class="lineno"> 8279</span>&#160;</div><div class="line"><a name="l08283"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#a098b1a3d3485828fde04fc7f10f8e1c4"> 8283</a></span>&#160;    <a class="code" href="classcl_1_1_device_command_queue.html#a098b1a3d3485828fde04fc7f10f8e1c4">DeviceCommandQueue</a>(</div><div class="line"><a name="l08284"></a><span class="lineno"> 8284</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l08285"></a><span class="lineno"> 8285</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a>&amp; device,</div><div class="line"><a name="l08286"></a><span class="lineno"> 8286</span>&#160;        DeviceQueueProperties properties = DeviceQueueProperties::None,</div><div class="line"><a name="l08287"></a><span class="lineno"> 8287</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l08288"></a><span class="lineno"> 8288</span>&#160;    {</div><div class="line"><a name="l08289"></a><span class="lineno"> 8289</span>&#160;        cl_int error;</div><div class="line"><a name="l08290"></a><span class="lineno"> 8290</span>&#160;</div><div class="line"><a name="l08291"></a><span class="lineno"> 8291</span>&#160;        cl_command_queue_properties mergedProperties =</div><div class="line"><a name="l08292"></a><span class="lineno"> 8292</span>&#160;            CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | <span class="keyword">static_cast&lt;</span>cl_command_queue_properties<span class="keyword">&gt;</span>(properties);</div><div class="line"><a name="l08293"></a><span class="lineno"> 8293</span>&#160;        cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l08294"></a><span class="lineno"> 8294</span>&#160;            CL_QUEUE_PROPERTIES, mergedProperties, 0 };</div><div class="line"><a name="l08295"></a><span class="lineno"> 8295</span>&#160;        object_ = ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l08296"></a><span class="lineno"> 8296</span>&#160;            context(), device(), queue_properties, &amp;error);</div><div class="line"><a name="l08297"></a><span class="lineno"> 8297</span>&#160;</div><div class="line"><a name="l08298"></a><span class="lineno"> 8298</span>&#160;        detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l08299"></a><span class="lineno"> 8299</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08300"></a><span class="lineno"> 8300</span>&#160;            *err = error;</div><div class="line"><a name="l08301"></a><span class="lineno"> 8301</span>&#160;        }</div><div class="line"><a name="l08302"></a><span class="lineno"> 8302</span>&#160;    }</div><div class="line"><a name="l08303"></a><span class="lineno"> 8303</span>&#160;</div><div class="line"><a name="l08307"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#a16613c9133f453851d72c6793d522d81"> 8307</a></span>&#160;    <a class="code" href="classcl_1_1_device_command_queue.html#a16613c9133f453851d72c6793d522d81">DeviceCommandQueue</a>(</div><div class="line"><a name="l08308"></a><span class="lineno"> 8308</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a>&amp; context,</div><div class="line"><a name="l08309"></a><span class="lineno"> 8309</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a>&amp; device,</div><div class="line"><a name="l08310"></a><span class="lineno"> 8310</span>&#160;        cl_uint queueSize,</div><div class="line"><a name="l08311"></a><span class="lineno"> 8311</span>&#160;        DeviceQueueProperties properties = DeviceQueueProperties::None,</div><div class="line"><a name="l08312"></a><span class="lineno"> 8312</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l08313"></a><span class="lineno"> 8313</span>&#160;    {</div><div class="line"><a name="l08314"></a><span class="lineno"> 8314</span>&#160;        cl_int error;</div><div class="line"><a name="l08315"></a><span class="lineno"> 8315</span>&#160;</div><div class="line"><a name="l08316"></a><span class="lineno"> 8316</span>&#160;        cl_command_queue_properties mergedProperties =</div><div class="line"><a name="l08317"></a><span class="lineno"> 8317</span>&#160;            CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | <span class="keyword">static_cast&lt;</span>cl_command_queue_properties<span class="keyword">&gt;</span>(properties);</div><div class="line"><a name="l08318"></a><span class="lineno"> 8318</span>&#160;        cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l08319"></a><span class="lineno"> 8319</span>&#160;            CL_QUEUE_PROPERTIES, mergedProperties,</div><div class="line"><a name="l08320"></a><span class="lineno"> 8320</span>&#160;            CL_QUEUE_SIZE, queueSize, </div><div class="line"><a name="l08321"></a><span class="lineno"> 8321</span>&#160;            0 };</div><div class="line"><a name="l08322"></a><span class="lineno"> 8322</span>&#160;        object_ = ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l08323"></a><span class="lineno"> 8323</span>&#160;            context(), device(), queue_properties, &amp;error);</div><div class="line"><a name="l08324"></a><span class="lineno"> 8324</span>&#160;</div><div class="line"><a name="l08325"></a><span class="lineno"> 8325</span>&#160;        detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l08326"></a><span class="lineno"> 8326</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08327"></a><span class="lineno"> 8327</span>&#160;            *err = error;</div><div class="line"><a name="l08328"></a><span class="lineno"> 8328</span>&#160;        }</div><div class="line"><a name="l08329"></a><span class="lineno"> 8329</span>&#160;    }</div><div class="line"><a name="l08330"></a><span class="lineno"> 8330</span>&#160;</div><div class="line"><a name="l08337"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#acaf1dee2f55faeac05b2c1c66daf51c2"> 8337</a></span>&#160;    <span class="keyword">explicit</span> <a class="code" href="classcl_1_1_device_command_queue.html#acaf1dee2f55faeac05b2c1c66daf51c2">DeviceCommandQueue</a>(<span class="keyword">const</span> cl_command_queue&amp; commandQueue, <span class="keywordtype">bool</span> retainObject = <span class="keyword">false</span>) :</div><div class="line"><a name="l08338"></a><span class="lineno"> 8338</span>&#160;        detail::Wrapper&lt;cl_type&gt;(commandQueue, retainObject) { }</div><div class="line"><a name="l08339"></a><span class="lineno"> 8339</span>&#160;</div><div class="line"><a name="l08340"></a><span class="lineno"> 8340</span>&#160;    <a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a>&amp; operator = (<span class="keyword">const</span> cl_command_queue&amp; rhs)</div><div class="line"><a name="l08341"></a><span class="lineno"> 8341</span>&#160;    {</div><div class="line"><a name="l08342"></a><span class="lineno"> 8342</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(rhs);</div><div class="line"><a name="l08343"></a><span class="lineno"> 8343</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l08344"></a><span class="lineno"> 8344</span>&#160;    }</div><div class="line"><a name="l08345"></a><span class="lineno"> 8345</span>&#160;</div><div class="line"><a name="l08349"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#a897785d635ca36d68444435617ad6fc1"> 8349</a></span>&#160;    <a class="code" href="classcl_1_1_device_command_queue.html#a897785d635ca36d68444435617ad6fc1">DeviceCommandQueue</a>(<span class="keyword">const</span> <a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a>&amp; queue) : detail::Wrapper&lt;cl_type&gt;(queue) {}</div><div class="line"><a name="l08350"></a><span class="lineno"> 8350</span>&#160;</div><div class="line"><a name="l08354"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#affa34667a9ee050bffe4fbacbe76dda3"> 8354</a></span>&#160;    <a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a>&amp; operator = (<span class="keyword">const</span> <a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a> &amp;queue)</div><div class="line"><a name="l08355"></a><span class="lineno"> 8355</span>&#160;    {</div><div class="line"><a name="l08356"></a><span class="lineno"> 8356</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(queue);</div><div class="line"><a name="l08357"></a><span class="lineno"> 8357</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l08358"></a><span class="lineno"> 8358</span>&#160;    }</div><div class="line"><a name="l08359"></a><span class="lineno"> 8359</span>&#160;</div><div class="line"><a name="l08363"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#ac1cc85eaacd3a27a57b34471b41b073c"> 8363</a></span>&#160;    <a class="code" href="classcl_1_1_device_command_queue.html#ac1cc85eaacd3a27a57b34471b41b073c">DeviceCommandQueue</a>(<a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a>&amp;&amp; queue) CL_HPP_NOEXCEPT_ : <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;</a>(std::move(queue)) {}</div><div class="line"><a name="l08364"></a><span class="lineno"> 8364</span>&#160;</div><div class="line"><a name="l08368"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#a7f2929602941beabe9bec6d3abdc07a7"> 8368</a></span>&#160;    <a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a>&amp; operator = (<a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a> &amp;&amp;queue)</div><div class="line"><a name="l08369"></a><span class="lineno"> 8369</span>&#160;    {</div><div class="line"><a name="l08370"></a><span class="lineno"> 8370</span>&#160;        <a class="code" href="classcl_1_1detail_1_1_wrapper.html">detail::Wrapper&lt;cl_type&gt;::operator=</a>(std::move(queue));</div><div class="line"><a name="l08371"></a><span class="lineno"> 8371</span>&#160;        <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l08372"></a><span class="lineno"> 8372</span>&#160;    }</div><div class="line"><a name="l08373"></a><span class="lineno"> 8373</span>&#160;</div><div class="line"><a name="l08374"></a><span class="lineno"> 8374</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l08375"></a><span class="lineno"> 8375</span>&#160;    cl_int getInfo(cl_command_queue_info name, T* param)<span class="keyword"> const</span></div><div class="line"><a name="l08376"></a><span class="lineno"> 8376</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l08377"></a><span class="lineno"> 8377</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(</div><div class="line"><a name="l08378"></a><span class="lineno"> 8378</span>&#160;            detail::getInfo(</div><div class="line"><a name="l08379"></a><span class="lineno"> 8379</span>&#160;            &amp;::clGetCommandQueueInfo, object_, name, param),</div><div class="line"><a name="l08380"></a><span class="lineno"> 8380</span>&#160;            __GET_COMMAND_QUEUE_INFO_ERR);</div><div class="line"><a name="l08381"></a><span class="lineno"> 8381</span>&#160;    }</div><div class="line"><a name="l08382"></a><span class="lineno"> 8382</span>&#160;</div><div class="line"><a name="l08383"></a><span class="lineno"> 8383</span>&#160;    <span class="keyword">template</span> &lt;cl_<span class="keywordtype">int</span> name&gt; <span class="keyword">typename</span></div><div class="line"><a name="l08384"></a><span class="lineno"> 8384</span>&#160;        <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits&lt;detail::cl_command_queue_info, name&gt;::param_type</a></div><div class="line"><a name="l08385"></a><span class="lineno"> 8385</span>&#160;        getInfo(cl_int* err = NULL)<span class="keyword"> const</span></div><div class="line"><a name="l08386"></a><span class="lineno"> 8386</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l08387"></a><span class="lineno"> 8387</span>&#160;        <span class="keyword">typename</span> <a class="code" href="structcl_1_1detail_1_1param__traits.html">detail::param_traits</a>&lt;</div><div class="line"><a name="l08388"></a><span class="lineno"> 8388</span>&#160;            detail::cl_command_queue_info, name&gt;::param_type param;</div><div class="line"><a name="l08389"></a><span class="lineno"> 8389</span>&#160;        cl_int result = getInfo(name, &amp;param);</div><div class="line"><a name="l08390"></a><span class="lineno"> 8390</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08391"></a><span class="lineno"> 8391</span>&#160;            *err = result;</div><div class="line"><a name="l08392"></a><span class="lineno"> 8392</span>&#160;        }</div><div class="line"><a name="l08393"></a><span class="lineno"> 8393</span>&#160;        <span class="keywordflow">return</span> param;</div><div class="line"><a name="l08394"></a><span class="lineno"> 8394</span>&#160;    }</div><div class="line"><a name="l08395"></a><span class="lineno"> 8395</span>&#160;</div><div class="line"><a name="l08402"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#acf98d7e70d84afc31789a6f26a95d14b"> 8402</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a> <a class="code" href="classcl_1_1_device_command_queue.html#acf98d7e70d84afc31789a6f26a95d14b">makeDefault</a>(</div><div class="line"><a name="l08403"></a><span class="lineno"> 8403</span>&#160;        cl_int *err = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l08404"></a><span class="lineno"> 8404</span>&#160;    {</div><div class="line"><a name="l08405"></a><span class="lineno"> 8405</span>&#160;        cl_int error;</div><div class="line"><a name="l08406"></a><span class="lineno"> 8406</span>&#160;        <a class="code" href="classcl_1_1_context.html">cl::Context</a> context = <a class="code" href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">cl::Context::getDefault</a>();</div><div class="line"><a name="l08407"></a><span class="lineno"> 8407</span>&#160;        <a class="code" href="classcl_1_1_device.html">cl::Device</a> device = <a class="code" href="classcl_1_1_device.html#a7428cf3cdccc824c414730ed65e40a0d">cl::Device::getDefault</a>();</div><div class="line"><a name="l08408"></a><span class="lineno"> 8408</span>&#160;</div><div class="line"><a name="l08409"></a><span class="lineno"> 8409</span>&#160;        cl_command_queue_properties properties =</div><div class="line"><a name="l08410"></a><span class="lineno"> 8410</span>&#160;            CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT;</div><div class="line"><a name="l08411"></a><span class="lineno"> 8411</span>&#160;        cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l08412"></a><span class="lineno"> 8412</span>&#160;            CL_QUEUE_PROPERTIES, properties,</div><div class="line"><a name="l08413"></a><span class="lineno"> 8413</span>&#160;            0 };</div><div class="line"><a name="l08414"></a><span class="lineno"> 8414</span>&#160;        <a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a> deviceQueue(</div><div class="line"><a name="l08415"></a><span class="lineno"> 8415</span>&#160;            ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l08416"></a><span class="lineno"> 8416</span>&#160;            context(), device(), queue_properties, &amp;error));</div><div class="line"><a name="l08417"></a><span class="lineno"> 8417</span>&#160;</div><div class="line"><a name="l08418"></a><span class="lineno"> 8418</span>&#160;        detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l08419"></a><span class="lineno"> 8419</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08420"></a><span class="lineno"> 8420</span>&#160;            *err = error;</div><div class="line"><a name="l08421"></a><span class="lineno"> 8421</span>&#160;        }</div><div class="line"><a name="l08422"></a><span class="lineno"> 8422</span>&#160;</div><div class="line"><a name="l08423"></a><span class="lineno"> 8423</span>&#160;        <span class="keywordflow">return</span> deviceQueue;</div><div class="line"><a name="l08424"></a><span class="lineno"> 8424</span>&#160;    }</div><div class="line"><a name="l08425"></a><span class="lineno"> 8425</span>&#160;</div><div class="line"><a name="l08432"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#a2188fe106a515329fd90ac58ee95e10e"> 8432</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a> <a class="code" href="classcl_1_1_device_command_queue.html#a2188fe106a515329fd90ac58ee95e10e">makeDefault</a>(</div><div class="line"><a name="l08433"></a><span class="lineno"> 8433</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a> &amp;context, <span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a> &amp;device, cl_int *err = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l08434"></a><span class="lineno"> 8434</span>&#160;    {</div><div class="line"><a name="l08435"></a><span class="lineno"> 8435</span>&#160;        cl_int error;</div><div class="line"><a name="l08436"></a><span class="lineno"> 8436</span>&#160;</div><div class="line"><a name="l08437"></a><span class="lineno"> 8437</span>&#160;        cl_command_queue_properties properties =</div><div class="line"><a name="l08438"></a><span class="lineno"> 8438</span>&#160;            CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT;</div><div class="line"><a name="l08439"></a><span class="lineno"> 8439</span>&#160;        cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l08440"></a><span class="lineno"> 8440</span>&#160;            CL_QUEUE_PROPERTIES, properties,</div><div class="line"><a name="l08441"></a><span class="lineno"> 8441</span>&#160;            0 };</div><div class="line"><a name="l08442"></a><span class="lineno"> 8442</span>&#160;        <a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a> deviceQueue(</div><div class="line"><a name="l08443"></a><span class="lineno"> 8443</span>&#160;            ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l08444"></a><span class="lineno"> 8444</span>&#160;            context(), device(), queue_properties, &amp;error));</div><div class="line"><a name="l08445"></a><span class="lineno"> 8445</span>&#160;</div><div class="line"><a name="l08446"></a><span class="lineno"> 8446</span>&#160;        detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l08447"></a><span class="lineno"> 8447</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08448"></a><span class="lineno"> 8448</span>&#160;            *err = error;</div><div class="line"><a name="l08449"></a><span class="lineno"> 8449</span>&#160;        }</div><div class="line"><a name="l08450"></a><span class="lineno"> 8450</span>&#160;</div><div class="line"><a name="l08451"></a><span class="lineno"> 8451</span>&#160;        <span class="keywordflow">return</span> deviceQueue;</div><div class="line"><a name="l08452"></a><span class="lineno"> 8452</span>&#160;    }</div><div class="line"><a name="l08453"></a><span class="lineno"> 8453</span>&#160;</div><div class="line"><a name="l08460"></a><span class="lineno"><a class="line" href="classcl_1_1_device_command_queue.html#a74abbdd1ba59525634baa4334ae70215"> 8460</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a> <a class="code" href="classcl_1_1_device_command_queue.html#a74abbdd1ba59525634baa4334ae70215">makeDefault</a>(</div><div class="line"><a name="l08461"></a><span class="lineno"> 8461</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a> &amp;context, <span class="keyword">const</span> <a class="code" href="classcl_1_1_device.html">Device</a> &amp;device, cl_uint queueSize, cl_int *err = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l08462"></a><span class="lineno"> 8462</span>&#160;    {</div><div class="line"><a name="l08463"></a><span class="lineno"> 8463</span>&#160;        cl_int error;</div><div class="line"><a name="l08464"></a><span class="lineno"> 8464</span>&#160;</div><div class="line"><a name="l08465"></a><span class="lineno"> 8465</span>&#160;        cl_command_queue_properties properties =</div><div class="line"><a name="l08466"></a><span class="lineno"> 8466</span>&#160;            CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT;</div><div class="line"><a name="l08467"></a><span class="lineno"> 8467</span>&#160;        cl_queue_properties queue_properties[] = {</div><div class="line"><a name="l08468"></a><span class="lineno"> 8468</span>&#160;            CL_QUEUE_PROPERTIES, properties,</div><div class="line"><a name="l08469"></a><span class="lineno"> 8469</span>&#160;            CL_QUEUE_SIZE, queueSize,</div><div class="line"><a name="l08470"></a><span class="lineno"> 8470</span>&#160;            0 };</div><div class="line"><a name="l08471"></a><span class="lineno"> 8471</span>&#160;        <a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a> deviceQueue(</div><div class="line"><a name="l08472"></a><span class="lineno"> 8472</span>&#160;            ::clCreateCommandQueueWithProperties(</div><div class="line"><a name="l08473"></a><span class="lineno"> 8473</span>&#160;                context(), device(), queue_properties, &amp;error));</div><div class="line"><a name="l08474"></a><span class="lineno"> 8474</span>&#160;</div><div class="line"><a name="l08475"></a><span class="lineno"> 8475</span>&#160;        detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR);</div><div class="line"><a name="l08476"></a><span class="lineno"> 8476</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08477"></a><span class="lineno"> 8477</span>&#160;            *err = error;</div><div class="line"><a name="l08478"></a><span class="lineno"> 8478</span>&#160;        }</div><div class="line"><a name="l08479"></a><span class="lineno"> 8479</span>&#160;</div><div class="line"><a name="l08480"></a><span class="lineno"> 8480</span>&#160;        <span class="keywordflow">return</span> deviceQueue;</div><div class="line"><a name="l08481"></a><span class="lineno"> 8481</span>&#160;    }</div><div class="line"><a name="l08482"></a><span class="lineno"> 8482</span>&#160;}; <span class="comment">// DeviceCommandQueue</span></div><div class="line"><a name="l08483"></a><span class="lineno"> 8483</span>&#160;</div><div class="line"><a name="l08484"></a><span class="lineno"> 8484</span>&#160;<span class="keyword">namespace </span>detail</div><div class="line"><a name="l08485"></a><span class="lineno"> 8485</span>&#160;{</div><div class="line"><a name="l08486"></a><span class="lineno"> 8486</span>&#160;    <span class="comment">// Specialization for device command queue</span></div><div class="line"><a name="l08487"></a><span class="lineno"> 8487</span>&#160;    <span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l08488"></a><span class="lineno"><a class="line" href="structcl_1_1detail_1_1_kernel_argument_handler_3_01cl_1_1_device_command_queue_00_01void_01_4.html"> 8488</a></span>&#160;    <span class="keyword">struct </span><a class="code" href="structcl_1_1detail_1_1_kernel_argument_handler.html">KernelArgumentHandler</a>&lt;<a class="code" href="namespacecl.html">cl</a>::<a class="code" href="classcl_1_1_device_command_queue.html">DeviceCommandQueue</a>, void&gt;</div><div class="line"><a name="l08489"></a><span class="lineno"> 8489</span>&#160;    {</div><div class="line"><a name="l08490"></a><span class="lineno"> 8490</span>&#160;        <span class="keyword">static</span> size_type size(<span class="keyword">const</span> <a class="code" href="classcl_1_1_device_command_queue.html">cl::DeviceCommandQueue</a>&amp;) { <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(cl_command_queue); }</div><div class="line"><a name="l08491"></a><span class="lineno"> 8491</span>&#160;        <span class="keyword">static</span> <span class="keyword">const</span> cl_command_queue* ptr(<span class="keyword">const</span> <a class="code" href="classcl_1_1_device_command_queue.html">cl::DeviceCommandQueue</a>&amp; value) { <span class="keywordflow">return</span> &amp;(value()); }</div><div class="line"><a name="l08492"></a><span class="lineno"> 8492</span>&#160;    };</div><div class="line"><a name="l08493"></a><span class="lineno"> 8493</span>&#160;} <span class="comment">// namespace detail</span></div><div class="line"><a name="l08494"></a><span class="lineno"> 8494</span>&#160;</div><div class="line"><a name="l08495"></a><span class="lineno"> 8495</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l08496"></a><span class="lineno"> 8496</span>&#160;</div><div class="line"><a name="l08497"></a><span class="lineno"> 8497</span>&#160;</div><div class="line"><a name="l08498"></a><span class="lineno"> 8498</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l08499"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#a96e0d46de95bd3f335c39f5b4f10c640"> 8499</a></span>&#160;<a class="code" href="classcl_1_1_buffer.html#a1c82aa24dd8a4d80b698605f60a26d71">Buffer::Buffer</a>(</div><div class="line"><a name="l08500"></a><span class="lineno"> 8500</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_context.html">Context</a> &amp;context,</div><div class="line"><a name="l08501"></a><span class="lineno"> 8501</span>&#160;    IteratorType startIterator,</div><div class="line"><a name="l08502"></a><span class="lineno"> 8502</span>&#160;    IteratorType endIterator,</div><div class="line"><a name="l08503"></a><span class="lineno"> 8503</span>&#160;    <span class="keywordtype">bool</span> readOnly,</div><div class="line"><a name="l08504"></a><span class="lineno"> 8504</span>&#160;    <span class="keywordtype">bool</span> useHostPtr,</div><div class="line"><a name="l08505"></a><span class="lineno"> 8505</span>&#160;    cl_int* err)</div><div class="line"><a name="l08506"></a><span class="lineno"> 8506</span>&#160;{</div><div class="line"><a name="l08507"></a><span class="lineno"> 8507</span>&#160;    <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits&lt;IteratorType&gt;::value_type DataType;</div><div class="line"><a name="l08508"></a><span class="lineno"> 8508</span>&#160;    cl_int error;</div><div class="line"><a name="l08509"></a><span class="lineno"> 8509</span>&#160;</div><div class="line"><a name="l08510"></a><span class="lineno"> 8510</span>&#160;    cl_mem_flags flags = 0;</div><div class="line"><a name="l08511"></a><span class="lineno"> 8511</span>&#160;    <span class="keywordflow">if</span>( readOnly ) {</div><div class="line"><a name="l08512"></a><span class="lineno"> 8512</span>&#160;        flags |= CL_MEM_READ_ONLY;</div><div class="line"><a name="l08513"></a><span class="lineno"> 8513</span>&#160;    }</div><div class="line"><a name="l08514"></a><span class="lineno"> 8514</span>&#160;    <span class="keywordflow">else</span> {</div><div class="line"><a name="l08515"></a><span class="lineno"> 8515</span>&#160;        flags |= CL_MEM_READ_WRITE;</div><div class="line"><a name="l08516"></a><span class="lineno"> 8516</span>&#160;    }</div><div class="line"><a name="l08517"></a><span class="lineno"> 8517</span>&#160;    <span class="keywordflow">if</span>( useHostPtr ) {</div><div class="line"><a name="l08518"></a><span class="lineno"> 8518</span>&#160;        flags |= CL_MEM_USE_HOST_PTR;</div><div class="line"><a name="l08519"></a><span class="lineno"> 8519</span>&#160;    }</div><div class="line"><a name="l08520"></a><span class="lineno"> 8520</span>&#160;    </div><div class="line"><a name="l08521"></a><span class="lineno"> 8521</span>&#160;    size_type size = <span class="keyword">sizeof</span>(DataType)*(endIterator - startIterator);</div><div class="line"><a name="l08522"></a><span class="lineno"> 8522</span>&#160;</div><div class="line"><a name="l08523"></a><span class="lineno"> 8523</span>&#160;    <span class="keywordflow">if</span>( useHostPtr ) {</div><div class="line"><a name="l08524"></a><span class="lineno"> 8524</span>&#160;        object_ = ::clCreateBuffer(context(), flags, size, static_cast&lt;DataType*&gt;(&amp;*startIterator), &amp;error);</div><div class="line"><a name="l08525"></a><span class="lineno"> 8525</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l08526"></a><span class="lineno"> 8526</span>&#160;        object_ = ::clCreateBuffer(context(), flags, size, 0, &amp;error);</div><div class="line"><a name="l08527"></a><span class="lineno"> 8527</span>&#160;    }</div><div class="line"><a name="l08528"></a><span class="lineno"> 8528</span>&#160;</div><div class="line"><a name="l08529"></a><span class="lineno"> 8529</span>&#160;    detail::errHandler(error, __CREATE_BUFFER_ERR);</div><div class="line"><a name="l08530"></a><span class="lineno"> 8530</span>&#160;    <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08531"></a><span class="lineno"> 8531</span>&#160;        *err = error;</div><div class="line"><a name="l08532"></a><span class="lineno"> 8532</span>&#160;    }</div><div class="line"><a name="l08533"></a><span class="lineno"> 8533</span>&#160;</div><div class="line"><a name="l08534"></a><span class="lineno"> 8534</span>&#160;    <span class="keywordflow">if</span>( !useHostPtr ) {</div><div class="line"><a name="l08535"></a><span class="lineno"> 8535</span>&#160;        <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue(context, 0, &amp;error);</div><div class="line"><a name="l08536"></a><span class="lineno"> 8536</span>&#160;        detail::errHandler(error, __CREATE_BUFFER_ERR);</div><div class="line"><a name="l08537"></a><span class="lineno"> 8537</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08538"></a><span class="lineno"> 8538</span>&#160;            *err = error;</div><div class="line"><a name="l08539"></a><span class="lineno"> 8539</span>&#160;        }</div><div class="line"><a name="l08540"></a><span class="lineno"> 8540</span>&#160;</div><div class="line"><a name="l08541"></a><span class="lineno"> 8541</span>&#160;        error = <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">cl::copy</a>(queue, startIterator, endIterator, *<span class="keyword">this</span>);</div><div class="line"><a name="l08542"></a><span class="lineno"> 8542</span>&#160;        detail::errHandler(error, __CREATE_BUFFER_ERR);</div><div class="line"><a name="l08543"></a><span class="lineno"> 8543</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08544"></a><span class="lineno"> 8544</span>&#160;            *err = error;</div><div class="line"><a name="l08545"></a><span class="lineno"> 8545</span>&#160;        }</div><div class="line"><a name="l08546"></a><span class="lineno"> 8546</span>&#160;    }</div><div class="line"><a name="l08547"></a><span class="lineno"> 8547</span>&#160;}</div><div class="line"><a name="l08548"></a><span class="lineno"> 8548</span>&#160;</div><div class="line"><a name="l08549"></a><span class="lineno"> 8549</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l08550"></a><span class="lineno"><a class="line" href="classcl_1_1_buffer.html#a589e770b263ccedb789620860799e2c6"> 8550</a></span>&#160;<a class="code" href="classcl_1_1_buffer.html#a1c82aa24dd8a4d80b698605f60a26d71">Buffer::Buffer</a>(</div><div class="line"><a name="l08551"></a><span class="lineno"> 8551</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue,</div><div class="line"><a name="l08552"></a><span class="lineno"> 8552</span>&#160;    IteratorType startIterator,</div><div class="line"><a name="l08553"></a><span class="lineno"> 8553</span>&#160;    IteratorType endIterator,</div><div class="line"><a name="l08554"></a><span class="lineno"> 8554</span>&#160;    <span class="keywordtype">bool</span> readOnly,</div><div class="line"><a name="l08555"></a><span class="lineno"> 8555</span>&#160;    <span class="keywordtype">bool</span> useHostPtr,</div><div class="line"><a name="l08556"></a><span class="lineno"> 8556</span>&#160;    cl_int* err)</div><div class="line"><a name="l08557"></a><span class="lineno"> 8557</span>&#160;{</div><div class="line"><a name="l08558"></a><span class="lineno"> 8558</span>&#160;    <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits&lt;IteratorType&gt;::value_type DataType;</div><div class="line"><a name="l08559"></a><span class="lineno"> 8559</span>&#160;    cl_int error;</div><div class="line"><a name="l08560"></a><span class="lineno"> 8560</span>&#160;</div><div class="line"><a name="l08561"></a><span class="lineno"> 8561</span>&#160;    cl_mem_flags flags = 0;</div><div class="line"><a name="l08562"></a><span class="lineno"> 8562</span>&#160;    <span class="keywordflow">if</span> (readOnly) {</div><div class="line"><a name="l08563"></a><span class="lineno"> 8563</span>&#160;        flags |= CL_MEM_READ_ONLY;</div><div class="line"><a name="l08564"></a><span class="lineno"> 8564</span>&#160;    }</div><div class="line"><a name="l08565"></a><span class="lineno"> 8565</span>&#160;    <span class="keywordflow">else</span> {</div><div class="line"><a name="l08566"></a><span class="lineno"> 8566</span>&#160;        flags |= CL_MEM_READ_WRITE;</div><div class="line"><a name="l08567"></a><span class="lineno"> 8567</span>&#160;    }</div><div class="line"><a name="l08568"></a><span class="lineno"> 8568</span>&#160;    <span class="keywordflow">if</span> (useHostPtr) {</div><div class="line"><a name="l08569"></a><span class="lineno"> 8569</span>&#160;        flags |= CL_MEM_USE_HOST_PTR;</div><div class="line"><a name="l08570"></a><span class="lineno"> 8570</span>&#160;    }</div><div class="line"><a name="l08571"></a><span class="lineno"> 8571</span>&#160;</div><div class="line"><a name="l08572"></a><span class="lineno"> 8572</span>&#160;    size_type size = <span class="keyword">sizeof</span>(DataType)*(endIterator - startIterator);</div><div class="line"><a name="l08573"></a><span class="lineno"> 8573</span>&#160;</div><div class="line"><a name="l08574"></a><span class="lineno"> 8574</span>&#160;    <a class="code" href="classcl_1_1_context.html">Context</a> context = queue.getInfo&lt;CL_QUEUE_CONTEXT&gt;();</div><div class="line"><a name="l08575"></a><span class="lineno"> 8575</span>&#160;</div><div class="line"><a name="l08576"></a><span class="lineno"> 8576</span>&#160;    <span class="keywordflow">if</span> (useHostPtr) {</div><div class="line"><a name="l08577"></a><span class="lineno"> 8577</span>&#160;        object_ = ::clCreateBuffer(context(), flags, size, static_cast&lt;DataType*&gt;(&amp;*startIterator), &amp;error);</div><div class="line"><a name="l08578"></a><span class="lineno"> 8578</span>&#160;    }</div><div class="line"><a name="l08579"></a><span class="lineno"> 8579</span>&#160;    <span class="keywordflow">else</span> {</div><div class="line"><a name="l08580"></a><span class="lineno"> 8580</span>&#160;        object_ = ::clCreateBuffer(context(), flags, size, 0, &amp;error);</div><div class="line"><a name="l08581"></a><span class="lineno"> 8581</span>&#160;    }</div><div class="line"><a name="l08582"></a><span class="lineno"> 8582</span>&#160;</div><div class="line"><a name="l08583"></a><span class="lineno"> 8583</span>&#160;    detail::errHandler(error, __CREATE_BUFFER_ERR);</div><div class="line"><a name="l08584"></a><span class="lineno"> 8584</span>&#160;    <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08585"></a><span class="lineno"> 8585</span>&#160;        *err = error;</div><div class="line"><a name="l08586"></a><span class="lineno"> 8586</span>&#160;    }</div><div class="line"><a name="l08587"></a><span class="lineno"> 8587</span>&#160;</div><div class="line"><a name="l08588"></a><span class="lineno"> 8588</span>&#160;    <span class="keywordflow">if</span> (!useHostPtr) {</div><div class="line"><a name="l08589"></a><span class="lineno"> 8589</span>&#160;        error = <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">cl::copy</a>(queue, startIterator, endIterator, *<span class="keyword">this</span>);</div><div class="line"><a name="l08590"></a><span class="lineno"> 8590</span>&#160;        detail::errHandler(error, __CREATE_BUFFER_ERR);</div><div class="line"><a name="l08591"></a><span class="lineno"> 8591</span>&#160;        <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08592"></a><span class="lineno"> 8592</span>&#160;            *err = error;</div><div class="line"><a name="l08593"></a><span class="lineno"> 8593</span>&#160;        }</div><div class="line"><a name="l08594"></a><span class="lineno"> 8594</span>&#160;    }</div><div class="line"><a name="l08595"></a><span class="lineno"> 8595</span>&#160;}</div><div class="line"><a name="l08596"></a><span class="lineno"> 8596</span>&#160;</div><div class="line"><a name="l08597"></a><span class="lineno"> 8597</span>&#160;<span class="keyword">inline</span> cl_int enqueueReadBuffer(</div><div class="line"><a name="l08598"></a><span class="lineno"> 8598</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buffer,</div><div class="line"><a name="l08599"></a><span class="lineno"> 8599</span>&#160;    cl_bool blocking,</div><div class="line"><a name="l08600"></a><span class="lineno"> 8600</span>&#160;    size_type offset,</div><div class="line"><a name="l08601"></a><span class="lineno"> 8601</span>&#160;    size_type size,</div><div class="line"><a name="l08602"></a><span class="lineno"> 8602</span>&#160;    <span class="keywordtype">void</span>* ptr,</div><div class="line"><a name="l08603"></a><span class="lineno"> 8603</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08604"></a><span class="lineno"> 8604</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l08605"></a><span class="lineno"> 8605</span>&#160;{</div><div class="line"><a name="l08606"></a><span class="lineno"> 8606</span>&#160;    cl_int error;</div><div class="line"><a name="l08607"></a><span class="lineno"> 8607</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08608"></a><span class="lineno"> 8608</span>&#160;</div><div class="line"><a name="l08609"></a><span class="lineno"> 8609</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l08610"></a><span class="lineno"> 8610</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l08611"></a><span class="lineno"> 8611</span>&#160;    }</div><div class="line"><a name="l08612"></a><span class="lineno"> 8612</span>&#160;</div><div class="line"><a name="l08613"></a><span class="lineno"> 8613</span>&#160;    <span class="keywordflow">return</span> queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event);</div><div class="line"><a name="l08614"></a><span class="lineno"> 8614</span>&#160;}</div><div class="line"><a name="l08615"></a><span class="lineno"> 8615</span>&#160;</div><div class="line"><a name="l08616"></a><span class="lineno"> 8616</span>&#160;<span class="keyword">inline</span> cl_int enqueueWriteBuffer(</div><div class="line"><a name="l08617"></a><span class="lineno"> 8617</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buffer,</div><div class="line"><a name="l08618"></a><span class="lineno"> 8618</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l08619"></a><span class="lineno"> 8619</span>&#160;        size_type offset,</div><div class="line"><a name="l08620"></a><span class="lineno"> 8620</span>&#160;        size_type size,</div><div class="line"><a name="l08621"></a><span class="lineno"> 8621</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">void</span>* ptr,</div><div class="line"><a name="l08622"></a><span class="lineno"> 8622</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08623"></a><span class="lineno"> 8623</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l08624"></a><span class="lineno"> 8624</span>&#160;{</div><div class="line"><a name="l08625"></a><span class="lineno"> 8625</span>&#160;    cl_int error;</div><div class="line"><a name="l08626"></a><span class="lineno"> 8626</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08627"></a><span class="lineno"> 8627</span>&#160;</div><div class="line"><a name="l08628"></a><span class="lineno"> 8628</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l08629"></a><span class="lineno"> 8629</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l08630"></a><span class="lineno"> 8630</span>&#160;    }</div><div class="line"><a name="l08631"></a><span class="lineno"> 8631</span>&#160;</div><div class="line"><a name="l08632"></a><span class="lineno"> 8632</span>&#160;    <span class="keywordflow">return</span> queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event);</div><div class="line"><a name="l08633"></a><span class="lineno"> 8633</span>&#160;}</div><div class="line"><a name="l08634"></a><span class="lineno"> 8634</span>&#160;</div><div class="line"><a name="l08635"></a><span class="lineno"> 8635</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span>* enqueueMapBuffer(</div><div class="line"><a name="l08636"></a><span class="lineno"> 8636</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buffer,</div><div class="line"><a name="l08637"></a><span class="lineno"> 8637</span>&#160;        cl_bool blocking,</div><div class="line"><a name="l08638"></a><span class="lineno"> 8638</span>&#160;        cl_map_flags flags,</div><div class="line"><a name="l08639"></a><span class="lineno"> 8639</span>&#160;        size_type offset,</div><div class="line"><a name="l08640"></a><span class="lineno"> 8640</span>&#160;        size_type size,</div><div class="line"><a name="l08641"></a><span class="lineno"> 8641</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08642"></a><span class="lineno"> 8642</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL,</div><div class="line"><a name="l08643"></a><span class="lineno"> 8643</span>&#160;        cl_int* err = NULL)</div><div class="line"><a name="l08644"></a><span class="lineno"> 8644</span>&#160;{</div><div class="line"><a name="l08645"></a><span class="lineno"> 8645</span>&#160;    cl_int error;</div><div class="line"><a name="l08646"></a><span class="lineno"> 8646</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08647"></a><span class="lineno"> 8647</span>&#160;    detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR);</div><div class="line"><a name="l08648"></a><span class="lineno"> 8648</span>&#160;    <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08649"></a><span class="lineno"> 8649</span>&#160;        *err = error;</div><div class="line"><a name="l08650"></a><span class="lineno"> 8650</span>&#160;    }</div><div class="line"><a name="l08651"></a><span class="lineno"> 8651</span>&#160;</div><div class="line"><a name="l08652"></a><span class="lineno"> 8652</span>&#160;    <span class="keywordtype">void</span> * result = ::clEnqueueMapBuffer(</div><div class="line"><a name="l08653"></a><span class="lineno"> 8653</span>&#160;            queue(), buffer(), blocking, flags, offset, size,</div><div class="line"><a name="l08654"></a><span class="lineno"> 8654</span>&#160;            (events != NULL) ? (cl_uint) events-&gt;size() : 0,</div><div class="line"><a name="l08655"></a><span class="lineno"> 8655</span>&#160;            (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*) &amp;events-&gt;front() : NULL,</div><div class="line"><a name="l08656"></a><span class="lineno"> 8656</span>&#160;            (cl_event*) event,</div><div class="line"><a name="l08657"></a><span class="lineno"> 8657</span>&#160;            &amp;error);</div><div class="line"><a name="l08658"></a><span class="lineno"> 8658</span>&#160;</div><div class="line"><a name="l08659"></a><span class="lineno"> 8659</span>&#160;    detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR);</div><div class="line"><a name="l08660"></a><span class="lineno"> 8660</span>&#160;    <span class="keywordflow">if</span> (err != NULL) {</div><div class="line"><a name="l08661"></a><span class="lineno"> 8661</span>&#160;        *err = error;</div><div class="line"><a name="l08662"></a><span class="lineno"> 8662</span>&#160;    }</div><div class="line"><a name="l08663"></a><span class="lineno"> 8663</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l08664"></a><span class="lineno"> 8664</span>&#160;}</div><div class="line"><a name="l08665"></a><span class="lineno"> 8665</span>&#160;</div><div class="line"><a name="l08666"></a><span class="lineno"> 8666</span>&#160;</div><div class="line"><a name="l08667"></a><span class="lineno"> 8667</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l08668"></a><span class="lineno"> 8668</span>&#160;</div><div class="line"><a name="l08673"></a><span class="lineno"> 8673</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l08674"></a><span class="lineno"><a class="line" href="namespacecl.html#abb2c4e45814ea569a27c39d37471b2a4"> 8674</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#abb2c4e45814ea569a27c39d37471b2a4">enqueueMapSVM</a>(</div><div class="line"><a name="l08675"></a><span class="lineno"> 8675</span>&#160;    T* ptr,</div><div class="line"><a name="l08676"></a><span class="lineno"> 8676</span>&#160;    cl_bool blocking,</div><div class="line"><a name="l08677"></a><span class="lineno"> 8677</span>&#160;    cl_map_flags flags,</div><div class="line"><a name="l08678"></a><span class="lineno"> 8678</span>&#160;    size_type size,</div><div class="line"><a name="l08679"></a><span class="lineno"> 8679</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events,</div><div class="line"><a name="l08680"></a><span class="lineno"> 8680</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event)</div><div class="line"><a name="l08681"></a><span class="lineno"> 8681</span>&#160;{</div><div class="line"><a name="l08682"></a><span class="lineno"> 8682</span>&#160;    cl_int error;</div><div class="line"><a name="l08683"></a><span class="lineno"> 8683</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08684"></a><span class="lineno"> 8684</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l08685"></a><span class="lineno"> 8685</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR);</div><div class="line"><a name="l08686"></a><span class="lineno"> 8686</span>&#160;    }</div><div class="line"><a name="l08687"></a><span class="lineno"> 8687</span>&#160;</div><div class="line"><a name="l08688"></a><span class="lineno"> 8688</span>&#160;    <span class="keywordflow">return</span> queue.<a class="code" href="classcl_1_1_command_queue.html#aec8211d19eb2ffbb8adc7f565fe61c3c">enqueueMapSVM</a>(</div><div class="line"><a name="l08689"></a><span class="lineno"> 8689</span>&#160;        ptr, blocking, flags, size, events, event);</div><div class="line"><a name="l08690"></a><span class="lineno"> 8690</span>&#160;}</div><div class="line"><a name="l08691"></a><span class="lineno"> 8691</span>&#160;</div><div class="line"><a name="l08697"></a><span class="lineno"> 8697</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> D&gt;</div><div class="line"><a name="l08698"></a><span class="lineno"><a class="line" href="namespacecl.html#a7aa80934f265ff5c97b715419aa38566"> 8698</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#abb2c4e45814ea569a27c39d37471b2a4">enqueueMapSVM</a>(</div><div class="line"><a name="l08699"></a><span class="lineno"> 8699</span>&#160;    cl::pointer&lt;T, D&gt; ptr,</div><div class="line"><a name="l08700"></a><span class="lineno"> 8700</span>&#160;    cl_bool blocking,</div><div class="line"><a name="l08701"></a><span class="lineno"> 8701</span>&#160;    cl_map_flags flags,</div><div class="line"><a name="l08702"></a><span class="lineno"> 8702</span>&#160;    size_type size,</div><div class="line"><a name="l08703"></a><span class="lineno"> 8703</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08704"></a><span class="lineno"> 8704</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l08705"></a><span class="lineno"> 8705</span>&#160;{</div><div class="line"><a name="l08706"></a><span class="lineno"> 8706</span>&#160;    cl_int error;</div><div class="line"><a name="l08707"></a><span class="lineno"> 8707</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08708"></a><span class="lineno"> 8708</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l08709"></a><span class="lineno"> 8709</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR);</div><div class="line"><a name="l08710"></a><span class="lineno"> 8710</span>&#160;    }</div><div class="line"><a name="l08711"></a><span class="lineno"> 8711</span>&#160;</div><div class="line"><a name="l08712"></a><span class="lineno"> 8712</span>&#160;    <span class="keywordflow">return</span> queue.<a class="code" href="classcl_1_1_command_queue.html#aec8211d19eb2ffbb8adc7f565fe61c3c">enqueueMapSVM</a>(</div><div class="line"><a name="l08713"></a><span class="lineno"> 8713</span>&#160;        ptr, blocking, flags, size, events, event);</div><div class="line"><a name="l08714"></a><span class="lineno"> 8714</span>&#160;}</div><div class="line"><a name="l08715"></a><span class="lineno"> 8715</span>&#160;</div><div class="line"><a name="l08721"></a><span class="lineno"> 8721</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> Alloc&gt;</div><div class="line"><a name="l08722"></a><span class="lineno"><a class="line" href="namespacecl.html#a8037dc6274012b061edabe1550a2c0ee"> 8722</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#abb2c4e45814ea569a27c39d37471b2a4">enqueueMapSVM</a>(</div><div class="line"><a name="l08723"></a><span class="lineno"> 8723</span>&#160;    cl::vector&lt;T, Alloc&gt; container,</div><div class="line"><a name="l08724"></a><span class="lineno"> 8724</span>&#160;    cl_bool blocking,</div><div class="line"><a name="l08725"></a><span class="lineno"> 8725</span>&#160;    cl_map_flags flags,</div><div class="line"><a name="l08726"></a><span class="lineno"> 8726</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08727"></a><span class="lineno"> 8727</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l08728"></a><span class="lineno"> 8728</span>&#160;{</div><div class="line"><a name="l08729"></a><span class="lineno"> 8729</span>&#160;    cl_int error;</div><div class="line"><a name="l08730"></a><span class="lineno"> 8730</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08731"></a><span class="lineno"> 8731</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l08732"></a><span class="lineno"> 8732</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR);</div><div class="line"><a name="l08733"></a><span class="lineno"> 8733</span>&#160;    }</div><div class="line"><a name="l08734"></a><span class="lineno"> 8734</span>&#160;</div><div class="line"><a name="l08735"></a><span class="lineno"> 8735</span>&#160;    <span class="keywordflow">return</span> queue.<a class="code" href="classcl_1_1_command_queue.html#aec8211d19eb2ffbb8adc7f565fe61c3c">enqueueMapSVM</a>(</div><div class="line"><a name="l08736"></a><span class="lineno"> 8736</span>&#160;        container, blocking, flags, events, event);</div><div class="line"><a name="l08737"></a><span class="lineno"> 8737</span>&#160;}</div><div class="line"><a name="l08738"></a><span class="lineno"> 8738</span>&#160;</div><div class="line"><a name="l08739"></a><span class="lineno"> 8739</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l08740"></a><span class="lineno"> 8740</span>&#160;</div><div class="line"><a name="l08741"></a><span class="lineno"> 8741</span>&#160;<span class="keyword">inline</span> cl_int enqueueUnmapMemObject(</div><div class="line"><a name="l08742"></a><span class="lineno"> 8742</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_memory.html">Memory</a>&amp; memory,</div><div class="line"><a name="l08743"></a><span class="lineno"> 8743</span>&#160;    <span class="keywordtype">void</span>* mapped_ptr,</div><div class="line"><a name="l08744"></a><span class="lineno"> 8744</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08745"></a><span class="lineno"> 8745</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l08746"></a><span class="lineno"> 8746</span>&#160;{</div><div class="line"><a name="l08747"></a><span class="lineno"> 8747</span>&#160;    cl_int error;</div><div class="line"><a name="l08748"></a><span class="lineno"> 8748</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08749"></a><span class="lineno"> 8749</span>&#160;    detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR);</div><div class="line"><a name="l08750"></a><span class="lineno"> 8750</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l08751"></a><span class="lineno"> 8751</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l08752"></a><span class="lineno"> 8752</span>&#160;    }</div><div class="line"><a name="l08753"></a><span class="lineno"> 8753</span>&#160;</div><div class="line"><a name="l08754"></a><span class="lineno"> 8754</span>&#160;    cl_event tmp;</div><div class="line"><a name="l08755"></a><span class="lineno"> 8755</span>&#160;    cl_int err = detail::errHandler(</div><div class="line"><a name="l08756"></a><span class="lineno"> 8756</span>&#160;        ::clEnqueueUnmapMemObject(</div><div class="line"><a name="l08757"></a><span class="lineno"> 8757</span>&#160;        queue(), memory(), mapped_ptr,</div><div class="line"><a name="l08758"></a><span class="lineno"> 8758</span>&#160;        (events != NULL) ? (cl_uint)events-&gt;size() : 0,</div><div class="line"><a name="l08759"></a><span class="lineno"> 8759</span>&#160;        (events != NULL &amp;&amp; events-&gt;size() &gt; 0) ? (cl_event*)&amp;events-&gt;front() : NULL,</div><div class="line"><a name="l08760"></a><span class="lineno"> 8760</span>&#160;        (<span class="keyword">event</span> != NULL) ? &amp;tmp : NULL),</div><div class="line"><a name="l08761"></a><span class="lineno"> 8761</span>&#160;        __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l08762"></a><span class="lineno"> 8762</span>&#160;</div><div class="line"><a name="l08763"></a><span class="lineno"> 8763</span>&#160;    <span class="keywordflow">if</span> (event != NULL &amp;&amp; err == CL_SUCCESS)</div><div class="line"><a name="l08764"></a><span class="lineno"> 8764</span>&#160;        *<span class="keyword">event</span> = tmp;</div><div class="line"><a name="l08765"></a><span class="lineno"> 8765</span>&#160;</div><div class="line"><a name="l08766"></a><span class="lineno"> 8766</span>&#160;    <span class="keywordflow">return</span> err;</div><div class="line"><a name="l08767"></a><span class="lineno"> 8767</span>&#160;}</div><div class="line"><a name="l08768"></a><span class="lineno"> 8768</span>&#160;</div><div class="line"><a name="l08769"></a><span class="lineno"> 8769</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l08770"></a><span class="lineno"> 8770</span>&#160;</div><div class="line"><a name="l08775"></a><span class="lineno"> 8775</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l08776"></a><span class="lineno"><a class="line" href="namespacecl.html#a45d896e5d437b505648b399dbe1c3cac"> 8776</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#a45d896e5d437b505648b399dbe1c3cac">enqueueUnmapSVM</a>(</div><div class="line"><a name="l08777"></a><span class="lineno"> 8777</span>&#160;    T* ptr,</div><div class="line"><a name="l08778"></a><span class="lineno"> 8778</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08779"></a><span class="lineno"> 8779</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l08780"></a><span class="lineno"> 8780</span>&#160;{</div><div class="line"><a name="l08781"></a><span class="lineno"> 8781</span>&#160;    cl_int error;</div><div class="line"><a name="l08782"></a><span class="lineno"> 8782</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08783"></a><span class="lineno"> 8783</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l08784"></a><span class="lineno"> 8784</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l08785"></a><span class="lineno"> 8785</span>&#160;    }</div><div class="line"><a name="l08786"></a><span class="lineno"> 8786</span>&#160;</div><div class="line"><a name="l08787"></a><span class="lineno"> 8787</span>&#160;    <span class="keywordflow">return</span> detail::errHandler(queue.<a class="code" href="classcl_1_1_command_queue.html#affae2ea7a86c23e01c11fbdcdc149300">enqueueUnmapSVM</a>(ptr, events, event), </div><div class="line"><a name="l08788"></a><span class="lineno"> 8788</span>&#160;        __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l08789"></a><span class="lineno"> 8789</span>&#160;</div><div class="line"><a name="l08790"></a><span class="lineno"> 8790</span>&#160;}</div><div class="line"><a name="l08791"></a><span class="lineno"> 8791</span>&#160;</div><div class="line"><a name="l08797"></a><span class="lineno"> 8797</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> D&gt;</div><div class="line"><a name="l08798"></a><span class="lineno"><a class="line" href="namespacecl.html#aa1c4d75a33c1d658ca4abae23376f733"> 8798</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#a45d896e5d437b505648b399dbe1c3cac">enqueueUnmapSVM</a>(</div><div class="line"><a name="l08799"></a><span class="lineno"> 8799</span>&#160;    cl::pointer&lt;T, D&gt; &amp;ptr,</div><div class="line"><a name="l08800"></a><span class="lineno"> 8800</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08801"></a><span class="lineno"> 8801</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l08802"></a><span class="lineno"> 8802</span>&#160;{</div><div class="line"><a name="l08803"></a><span class="lineno"> 8803</span>&#160;    cl_int error;</div><div class="line"><a name="l08804"></a><span class="lineno"> 8804</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08805"></a><span class="lineno"> 8805</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l08806"></a><span class="lineno"> 8806</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l08807"></a><span class="lineno"> 8807</span>&#160;    }</div><div class="line"><a name="l08808"></a><span class="lineno"> 8808</span>&#160;</div><div class="line"><a name="l08809"></a><span class="lineno"> 8809</span>&#160;    <span class="keywordflow">return</span> detail::errHandler(queue.<a class="code" href="classcl_1_1_command_queue.html#affae2ea7a86c23e01c11fbdcdc149300">enqueueUnmapSVM</a>(ptr, events, event),</div><div class="line"><a name="l08810"></a><span class="lineno"> 8810</span>&#160;        __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l08811"></a><span class="lineno"> 8811</span>&#160;}</div><div class="line"><a name="l08812"></a><span class="lineno"> 8812</span>&#160;</div><div class="line"><a name="l08818"></a><span class="lineno"> 8818</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> Alloc&gt;</div><div class="line"><a name="l08819"></a><span class="lineno"><a class="line" href="namespacecl.html#a5c0670097b79b7f6fd2762bae83328f4"> 8819</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#a45d896e5d437b505648b399dbe1c3cac">enqueueUnmapSVM</a>(</div><div class="line"><a name="l08820"></a><span class="lineno"> 8820</span>&#160;    cl::vector&lt;T, Alloc&gt; &amp;container,</div><div class="line"><a name="l08821"></a><span class="lineno"> 8821</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08822"></a><span class="lineno"> 8822</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l08823"></a><span class="lineno"> 8823</span>&#160;{</div><div class="line"><a name="l08824"></a><span class="lineno"> 8824</span>&#160;    cl_int error;</div><div class="line"><a name="l08825"></a><span class="lineno"> 8825</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08826"></a><span class="lineno"> 8826</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l08827"></a><span class="lineno"> 8827</span>&#160;        <span class="keywordflow">return</span> detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l08828"></a><span class="lineno"> 8828</span>&#160;    }</div><div class="line"><a name="l08829"></a><span class="lineno"> 8829</span>&#160;</div><div class="line"><a name="l08830"></a><span class="lineno"> 8830</span>&#160;    <span class="keywordflow">return</span> detail::errHandler(queue.<a class="code" href="classcl_1_1_command_queue.html#affae2ea7a86c23e01c11fbdcdc149300">enqueueUnmapSVM</a>(container, events, event),</div><div class="line"><a name="l08831"></a><span class="lineno"> 8831</span>&#160;        __ENQUEUE_UNMAP_MEM_OBJECT_ERR);</div><div class="line"><a name="l08832"></a><span class="lineno"> 8832</span>&#160;}</div><div class="line"><a name="l08833"></a><span class="lineno"> 8833</span>&#160;</div><div class="line"><a name="l08834"></a><span class="lineno"> 8834</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l08835"></a><span class="lineno"> 8835</span>&#160;</div><div class="line"><a name="l08836"></a><span class="lineno"> 8836</span>&#160;<span class="keyword">inline</span> cl_int enqueueCopyBuffer(</div><div class="line"><a name="l08837"></a><span class="lineno"> 8837</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; src,</div><div class="line"><a name="l08838"></a><span class="lineno"> 8838</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; dst,</div><div class="line"><a name="l08839"></a><span class="lineno"> 8839</span>&#160;        size_type src_offset,</div><div class="line"><a name="l08840"></a><span class="lineno"> 8840</span>&#160;        size_type dst_offset,</div><div class="line"><a name="l08841"></a><span class="lineno"> 8841</span>&#160;        size_type size,</div><div class="line"><a name="l08842"></a><span class="lineno"> 8842</span>&#160;        <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08843"></a><span class="lineno"> 8843</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l08844"></a><span class="lineno"> 8844</span>&#160;{</div><div class="line"><a name="l08845"></a><span class="lineno"> 8845</span>&#160;    cl_int error;</div><div class="line"><a name="l08846"></a><span class="lineno"> 8846</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08847"></a><span class="lineno"> 8847</span>&#160;</div><div class="line"><a name="l08848"></a><span class="lineno"> 8848</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l08849"></a><span class="lineno"> 8849</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l08850"></a><span class="lineno"> 8850</span>&#160;    }</div><div class="line"><a name="l08851"></a><span class="lineno"> 8851</span>&#160;</div><div class="line"><a name="l08852"></a><span class="lineno"> 8852</span>&#160;    <span class="keywordflow">return</span> queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event);</div><div class="line"><a name="l08853"></a><span class="lineno"> 8853</span>&#160;}</div><div class="line"><a name="l08854"></a><span class="lineno"> 8854</span>&#160;</div><div class="line"><a name="l08860"></a><span class="lineno"> 8860</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l08861"></a><span class="lineno"><a class="line" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb"> 8861</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">copy</a>( IteratorType startIterator, IteratorType endIterator, <a class="code" href="classcl_1_1_buffer.html">cl::Buffer</a> &amp;buffer )</div><div class="line"><a name="l08862"></a><span class="lineno"> 8862</span>&#160;{</div><div class="line"><a name="l08863"></a><span class="lineno"> 8863</span>&#160;    cl_int error;</div><div class="line"><a name="l08864"></a><span class="lineno"> 8864</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08865"></a><span class="lineno"> 8865</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS)</div><div class="line"><a name="l08866"></a><span class="lineno"> 8866</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l08867"></a><span class="lineno"> 8867</span>&#160;</div><div class="line"><a name="l08868"></a><span class="lineno"> 8868</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">cl::copy</a>(queue, startIterator, endIterator, buffer);</div><div class="line"><a name="l08869"></a><span class="lineno"> 8869</span>&#160;}</div><div class="line"><a name="l08870"></a><span class="lineno"> 8870</span>&#160;</div><div class="line"><a name="l08876"></a><span class="lineno"> 8876</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l08877"></a><span class="lineno"><a class="line" href="namespacecl.html#a05791e9d5da23b21abd6e319fb262c9f"> 8877</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">copy</a>( <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">cl::Buffer</a> &amp;buffer, IteratorType startIterator, IteratorType endIterator )</div><div class="line"><a name="l08878"></a><span class="lineno"> 8878</span>&#160;{</div><div class="line"><a name="l08879"></a><span class="lineno"> 8879</span>&#160;    cl_int error;</div><div class="line"><a name="l08880"></a><span class="lineno"> 8880</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08881"></a><span class="lineno"> 8881</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS)</div><div class="line"><a name="l08882"></a><span class="lineno"> 8882</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l08883"></a><span class="lineno"> 8883</span>&#160;</div><div class="line"><a name="l08884"></a><span class="lineno"> 8884</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">cl::copy</a>(queue, buffer, startIterator, endIterator);</div><div class="line"><a name="l08885"></a><span class="lineno"> 8885</span>&#160;}</div><div class="line"><a name="l08886"></a><span class="lineno"> 8886</span>&#160;</div><div class="line"><a name="l08892"></a><span class="lineno"> 8892</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l08893"></a><span class="lineno"><a class="line" href="namespacecl.html#a2f71ed9a316daf59c03c0f3ba62f1bd3"> 8893</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">copy</a>( <span class="keyword">const</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, IteratorType startIterator, IteratorType endIterator, <a class="code" href="classcl_1_1_buffer.html">cl::Buffer</a> &amp;buffer )</div><div class="line"><a name="l08894"></a><span class="lineno"> 8894</span>&#160;{</div><div class="line"><a name="l08895"></a><span class="lineno"> 8895</span>&#160;    <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits&lt;IteratorType&gt;::value_type DataType;</div><div class="line"><a name="l08896"></a><span class="lineno"> 8896</span>&#160;    cl_int error;</div><div class="line"><a name="l08897"></a><span class="lineno"> 8897</span>&#160;    </div><div class="line"><a name="l08898"></a><span class="lineno"> 8898</span>&#160;    size_type length = endIterator-startIterator;</div><div class="line"><a name="l08899"></a><span class="lineno"> 8899</span>&#160;    size_type byteLength = length*<span class="keyword">sizeof</span>(DataType);</div><div class="line"><a name="l08900"></a><span class="lineno"> 8900</span>&#160;</div><div class="line"><a name="l08901"></a><span class="lineno"> 8901</span>&#160;    DataType *pointer = </div><div class="line"><a name="l08902"></a><span class="lineno"> 8902</span>&#160;        <span class="keyword">static_cast&lt;</span>DataType*<span class="keyword">&gt;</span>(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &amp;error));</div><div class="line"><a name="l08903"></a><span class="lineno"> 8903</span>&#160;    <span class="comment">// if exceptions enabled, enqueueMapBuffer will throw</span></div><div class="line"><a name="l08904"></a><span class="lineno"> 8904</span>&#160;    <span class="keywordflow">if</span>( error != CL_SUCCESS ) {</div><div class="line"><a name="l08905"></a><span class="lineno"> 8905</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l08906"></a><span class="lineno"> 8906</span>&#160;    }</div><div class="line"><a name="l08907"></a><span class="lineno"> 8907</span>&#160;<span class="preprocessor">#if defined(_MSC_VER)</span></div><div class="line"><a name="l08908"></a><span class="lineno"> 8908</span>&#160;    <a class="code" href="namespacecl.html#a02c4368c6ce7a1a99132eafd5dc96fa9">std::copy</a>(</div><div class="line"><a name="l08909"></a><span class="lineno"> 8909</span>&#160;        startIterator, </div><div class="line"><a name="l08910"></a><span class="lineno"> 8910</span>&#160;        endIterator, </div><div class="line"><a name="l08911"></a><span class="lineno"> 8911</span>&#160;        stdext::checked_array_iterator&lt;DataType*&gt;(</div><div class="line"><a name="l08912"></a><span class="lineno"> 8912</span>&#160;            pointer, length));</div><div class="line"><a name="l08913"></a><span class="lineno"> 8913</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l08914"></a><span class="lineno"> 8914</span>&#160;    <a class="code" href="namespacecl.html#a02c4368c6ce7a1a99132eafd5dc96fa9">std::copy</a>(startIterator, endIterator, pointer);</div><div class="line"><a name="l08915"></a><span class="lineno"> 8915</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l08916"></a><span class="lineno"> 8916</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a> endEvent;</div><div class="line"><a name="l08917"></a><span class="lineno"> 8917</span>&#160;    error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &amp;endEvent);</div><div class="line"><a name="l08918"></a><span class="lineno"> 8918</span>&#160;    <span class="comment">// if exceptions enabled, enqueueUnmapMemObject will throw</span></div><div class="line"><a name="l08919"></a><span class="lineno"> 8919</span>&#160;    <span class="keywordflow">if</span>( error != CL_SUCCESS ) { </div><div class="line"><a name="l08920"></a><span class="lineno"> 8920</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l08921"></a><span class="lineno"> 8921</span>&#160;    }</div><div class="line"><a name="l08922"></a><span class="lineno"> 8922</span>&#160;    endEvent.<a class="code" href="classcl_1_1_event.html#a51f83064c2024df649667071e81fb847">wait</a>();</div><div class="line"><a name="l08923"></a><span class="lineno"> 8923</span>&#160;    <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l08924"></a><span class="lineno"> 8924</span>&#160;}</div><div class="line"><a name="l08925"></a><span class="lineno"> 8925</span>&#160;</div><div class="line"><a name="l08931"></a><span class="lineno"> 8931</span>&#160;<span class="keyword">template</span>&lt; <span class="keyword">typename</span> IteratorType &gt;</div><div class="line"><a name="l08932"></a><span class="lineno"><a class="line" href="namespacecl.html#a02c4368c6ce7a1a99132eafd5dc96fa9"> 8932</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">copy</a>( <span class="keyword">const</span> <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">cl::Buffer</a> &amp;buffer, IteratorType startIterator, IteratorType endIterator )</div><div class="line"><a name="l08933"></a><span class="lineno"> 8933</span>&#160;{</div><div class="line"><a name="l08934"></a><span class="lineno"> 8934</span>&#160;    <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits&lt;IteratorType&gt;::value_type DataType;</div><div class="line"><a name="l08935"></a><span class="lineno"> 8935</span>&#160;    cl_int error;</div><div class="line"><a name="l08936"></a><span class="lineno"> 8936</span>&#160;        </div><div class="line"><a name="l08937"></a><span class="lineno"> 8937</span>&#160;    size_type length = endIterator-startIterator;</div><div class="line"><a name="l08938"></a><span class="lineno"> 8938</span>&#160;    size_type byteLength = length*<span class="keyword">sizeof</span>(DataType);</div><div class="line"><a name="l08939"></a><span class="lineno"> 8939</span>&#160;</div><div class="line"><a name="l08940"></a><span class="lineno"> 8940</span>&#160;    DataType *pointer = </div><div class="line"><a name="l08941"></a><span class="lineno"> 8941</span>&#160;        <span class="keyword">static_cast&lt;</span>DataType*<span class="keyword">&gt;</span>(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &amp;error));</div><div class="line"><a name="l08942"></a><span class="lineno"> 8942</span>&#160;    <span class="comment">// if exceptions enabled, enqueueMapBuffer will throw</span></div><div class="line"><a name="l08943"></a><span class="lineno"> 8943</span>&#160;    <span class="keywordflow">if</span>( error != CL_SUCCESS ) {</div><div class="line"><a name="l08944"></a><span class="lineno"> 8944</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l08945"></a><span class="lineno"> 8945</span>&#160;    }</div><div class="line"><a name="l08946"></a><span class="lineno"> 8946</span>&#160;    <a class="code" href="namespacecl.html#a02c4368c6ce7a1a99132eafd5dc96fa9">std::copy</a>(pointer, pointer + length, startIterator);</div><div class="line"><a name="l08947"></a><span class="lineno"> 8947</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a> endEvent;</div><div class="line"><a name="l08948"></a><span class="lineno"> 8948</span>&#160;    error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &amp;endEvent);</div><div class="line"><a name="l08949"></a><span class="lineno"> 8949</span>&#160;    <span class="comment">// if exceptions enabled, enqueueUnmapMemObject will throw</span></div><div class="line"><a name="l08950"></a><span class="lineno"> 8950</span>&#160;    <span class="keywordflow">if</span>( error != CL_SUCCESS ) { </div><div class="line"><a name="l08951"></a><span class="lineno"> 8951</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l08952"></a><span class="lineno"> 8952</span>&#160;    }</div><div class="line"><a name="l08953"></a><span class="lineno"> 8953</span>&#160;    endEvent.<a class="code" href="classcl_1_1_event.html#a51f83064c2024df649667071e81fb847">wait</a>();</div><div class="line"><a name="l08954"></a><span class="lineno"> 8954</span>&#160;    <span class="keywordflow">return</span> CL_SUCCESS;</div><div class="line"><a name="l08955"></a><span class="lineno"> 8955</span>&#160;}</div><div class="line"><a name="l08956"></a><span class="lineno"> 8956</span>&#160;</div><div class="line"><a name="l08957"></a><span class="lineno"> 8957</span>&#160;</div><div class="line"><a name="l08958"></a><span class="lineno"> 8958</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l08959"></a><span class="lineno"> 8959</span>&#160;</div><div class="line"><a name="l08962"></a><span class="lineno"> 8962</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> Alloc&gt;</div><div class="line"><a name="l08963"></a><span class="lineno"><a class="line" href="namespacecl.html#ae97dc5bb86e2c3c3935280a86cda301c"> 8963</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#ae97dc5bb86e2c3c3935280a86cda301c">mapSVM</a>(cl::vector&lt;T, Alloc&gt; &amp;container)</div><div class="line"><a name="l08964"></a><span class="lineno"> 8964</span>&#160;{</div><div class="line"><a name="l08965"></a><span class="lineno"> 8965</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacecl.html#abb2c4e45814ea569a27c39d37471b2a4">enqueueMapSVM</a>(container, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE);</div><div class="line"><a name="l08966"></a><span class="lineno"> 8966</span>&#160;}</div><div class="line"><a name="l08967"></a><span class="lineno"> 8967</span>&#160;</div><div class="line"><a name="l08971"></a><span class="lineno"> 8971</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">class</span> Alloc&gt;</div><div class="line"><a name="l08972"></a><span class="lineno"><a class="line" href="namespacecl.html#af9f49b386b20c55c04a9e6cd21849fd5"> 8972</a></span>&#160;<span class="keyword">inline</span> cl_int <a class="code" href="namespacecl.html#af9f49b386b20c55c04a9e6cd21849fd5">unmapSVM</a>(cl::vector&lt;T, Alloc&gt; &amp;container)</div><div class="line"><a name="l08973"></a><span class="lineno"> 8973</span>&#160;{</div><div class="line"><a name="l08974"></a><span class="lineno"> 8974</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="namespacecl.html#a45d896e5d437b505648b399dbe1c3cac">enqueueUnmapSVM</a>(container);</div><div class="line"><a name="l08975"></a><span class="lineno"> 8975</span>&#160;}</div><div class="line"><a name="l08976"></a><span class="lineno"> 8976</span>&#160;</div><div class="line"><a name="l08977"></a><span class="lineno"> 8977</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l08978"></a><span class="lineno"> 8978</span>&#160;</div><div class="line"><a name="l08979"></a><span class="lineno"> 8979</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l08980"></a><span class="lineno"> 8980</span>&#160;<span class="keyword">inline</span> cl_int enqueueReadBufferRect(</div><div class="line"><a name="l08981"></a><span class="lineno"> 8981</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buffer,</div><div class="line"><a name="l08982"></a><span class="lineno"> 8982</span>&#160;    cl_bool blocking,</div><div class="line"><a name="l08983"></a><span class="lineno"> 8983</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; buffer_offset,</div><div class="line"><a name="l08984"></a><span class="lineno"> 8984</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; host_offset,</div><div class="line"><a name="l08985"></a><span class="lineno"> 8985</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l08986"></a><span class="lineno"> 8986</span>&#160;    size_type buffer_row_pitch,</div><div class="line"><a name="l08987"></a><span class="lineno"> 8987</span>&#160;    size_type buffer_slice_pitch,</div><div class="line"><a name="l08988"></a><span class="lineno"> 8988</span>&#160;    size_type host_row_pitch,</div><div class="line"><a name="l08989"></a><span class="lineno"> 8989</span>&#160;    size_type host_slice_pitch,</div><div class="line"><a name="l08990"></a><span class="lineno"> 8990</span>&#160;    <span class="keywordtype">void</span> *ptr,</div><div class="line"><a name="l08991"></a><span class="lineno"> 8991</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l08992"></a><span class="lineno"> 8992</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l08993"></a><span class="lineno"> 8993</span>&#160;{</div><div class="line"><a name="l08994"></a><span class="lineno"> 8994</span>&#160;    cl_int error;</div><div class="line"><a name="l08995"></a><span class="lineno"> 8995</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l08996"></a><span class="lineno"> 8996</span>&#160;</div><div class="line"><a name="l08997"></a><span class="lineno"> 8997</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l08998"></a><span class="lineno"> 8998</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l08999"></a><span class="lineno"> 8999</span>&#160;    }</div><div class="line"><a name="l09000"></a><span class="lineno"> 9000</span>&#160;</div><div class="line"><a name="l09001"></a><span class="lineno"> 9001</span>&#160;    <span class="keywordflow">return</span> queue.enqueueReadBufferRect(</div><div class="line"><a name="l09002"></a><span class="lineno"> 9002</span>&#160;        buffer, </div><div class="line"><a name="l09003"></a><span class="lineno"> 9003</span>&#160;        blocking, </div><div class="line"><a name="l09004"></a><span class="lineno"> 9004</span>&#160;        buffer_offset, </div><div class="line"><a name="l09005"></a><span class="lineno"> 9005</span>&#160;        host_offset,</div><div class="line"><a name="l09006"></a><span class="lineno"> 9006</span>&#160;        region,</div><div class="line"><a name="l09007"></a><span class="lineno"> 9007</span>&#160;        buffer_row_pitch,</div><div class="line"><a name="l09008"></a><span class="lineno"> 9008</span>&#160;        buffer_slice_pitch,</div><div class="line"><a name="l09009"></a><span class="lineno"> 9009</span>&#160;        host_row_pitch,</div><div class="line"><a name="l09010"></a><span class="lineno"> 9010</span>&#160;        host_slice_pitch,</div><div class="line"><a name="l09011"></a><span class="lineno"> 9011</span>&#160;        ptr, </div><div class="line"><a name="l09012"></a><span class="lineno"> 9012</span>&#160;        events, </div><div class="line"><a name="l09013"></a><span class="lineno"> 9013</span>&#160;        event);</div><div class="line"><a name="l09014"></a><span class="lineno"> 9014</span>&#160;}</div><div class="line"><a name="l09015"></a><span class="lineno"> 9015</span>&#160;</div><div class="line"><a name="l09016"></a><span class="lineno"> 9016</span>&#160;<span class="keyword">inline</span> cl_int enqueueWriteBufferRect(</div><div class="line"><a name="l09017"></a><span class="lineno"> 9017</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; buffer,</div><div class="line"><a name="l09018"></a><span class="lineno"> 9018</span>&#160;    cl_bool blocking,</div><div class="line"><a name="l09019"></a><span class="lineno"> 9019</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; buffer_offset,</div><div class="line"><a name="l09020"></a><span class="lineno"> 9020</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; host_offset,</div><div class="line"><a name="l09021"></a><span class="lineno"> 9021</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l09022"></a><span class="lineno"> 9022</span>&#160;    size_type buffer_row_pitch,</div><div class="line"><a name="l09023"></a><span class="lineno"> 9023</span>&#160;    size_type buffer_slice_pitch,</div><div class="line"><a name="l09024"></a><span class="lineno"> 9024</span>&#160;    size_type host_row_pitch,</div><div class="line"><a name="l09025"></a><span class="lineno"> 9025</span>&#160;    size_type host_slice_pitch,</div><div class="line"><a name="l09026"></a><span class="lineno"> 9026</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">void</span> *ptr,</div><div class="line"><a name="l09027"></a><span class="lineno"> 9027</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l09028"></a><span class="lineno"> 9028</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l09029"></a><span class="lineno"> 9029</span>&#160;{</div><div class="line"><a name="l09030"></a><span class="lineno"> 9030</span>&#160;    cl_int error;</div><div class="line"><a name="l09031"></a><span class="lineno"> 9031</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l09032"></a><span class="lineno"> 9032</span>&#160;</div><div class="line"><a name="l09033"></a><span class="lineno"> 9033</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l09034"></a><span class="lineno"> 9034</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l09035"></a><span class="lineno"> 9035</span>&#160;    }</div><div class="line"><a name="l09036"></a><span class="lineno"> 9036</span>&#160;</div><div class="line"><a name="l09037"></a><span class="lineno"> 9037</span>&#160;    <span class="keywordflow">return</span> queue.enqueueWriteBufferRect(</div><div class="line"><a name="l09038"></a><span class="lineno"> 9038</span>&#160;        buffer, </div><div class="line"><a name="l09039"></a><span class="lineno"> 9039</span>&#160;        blocking, </div><div class="line"><a name="l09040"></a><span class="lineno"> 9040</span>&#160;        buffer_offset, </div><div class="line"><a name="l09041"></a><span class="lineno"> 9041</span>&#160;        host_offset,</div><div class="line"><a name="l09042"></a><span class="lineno"> 9042</span>&#160;        region,</div><div class="line"><a name="l09043"></a><span class="lineno"> 9043</span>&#160;        buffer_row_pitch,</div><div class="line"><a name="l09044"></a><span class="lineno"> 9044</span>&#160;        buffer_slice_pitch,</div><div class="line"><a name="l09045"></a><span class="lineno"> 9045</span>&#160;        host_row_pitch,</div><div class="line"><a name="l09046"></a><span class="lineno"> 9046</span>&#160;        host_slice_pitch,</div><div class="line"><a name="l09047"></a><span class="lineno"> 9047</span>&#160;        ptr, </div><div class="line"><a name="l09048"></a><span class="lineno"> 9048</span>&#160;        events, </div><div class="line"><a name="l09049"></a><span class="lineno"> 9049</span>&#160;        event);</div><div class="line"><a name="l09050"></a><span class="lineno"> 9050</span>&#160;}</div><div class="line"><a name="l09051"></a><span class="lineno"> 9051</span>&#160;</div><div class="line"><a name="l09052"></a><span class="lineno"> 9052</span>&#160;<span class="keyword">inline</span> cl_int enqueueCopyBufferRect(</div><div class="line"><a name="l09053"></a><span class="lineno"> 9053</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; src,</div><div class="line"><a name="l09054"></a><span class="lineno"> 9054</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; dst,</div><div class="line"><a name="l09055"></a><span class="lineno"> 9055</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; src_origin,</div><div class="line"><a name="l09056"></a><span class="lineno"> 9056</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; dst_origin,</div><div class="line"><a name="l09057"></a><span class="lineno"> 9057</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l09058"></a><span class="lineno"> 9058</span>&#160;    size_type src_row_pitch,</div><div class="line"><a name="l09059"></a><span class="lineno"> 9059</span>&#160;    size_type src_slice_pitch,</div><div class="line"><a name="l09060"></a><span class="lineno"> 9060</span>&#160;    size_type dst_row_pitch,</div><div class="line"><a name="l09061"></a><span class="lineno"> 9061</span>&#160;    size_type dst_slice_pitch,</div><div class="line"><a name="l09062"></a><span class="lineno"> 9062</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l09063"></a><span class="lineno"> 9063</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l09064"></a><span class="lineno"> 9064</span>&#160;{</div><div class="line"><a name="l09065"></a><span class="lineno"> 9065</span>&#160;    cl_int error;</div><div class="line"><a name="l09066"></a><span class="lineno"> 9066</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l09067"></a><span class="lineno"> 9067</span>&#160;</div><div class="line"><a name="l09068"></a><span class="lineno"> 9068</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l09069"></a><span class="lineno"> 9069</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l09070"></a><span class="lineno"> 9070</span>&#160;    }</div><div class="line"><a name="l09071"></a><span class="lineno"> 9071</span>&#160;</div><div class="line"><a name="l09072"></a><span class="lineno"> 9072</span>&#160;    <span class="keywordflow">return</span> queue.enqueueCopyBufferRect(</div><div class="line"><a name="l09073"></a><span class="lineno"> 9073</span>&#160;        src,</div><div class="line"><a name="l09074"></a><span class="lineno"> 9074</span>&#160;        dst,</div><div class="line"><a name="l09075"></a><span class="lineno"> 9075</span>&#160;        src_origin,</div><div class="line"><a name="l09076"></a><span class="lineno"> 9076</span>&#160;        dst_origin,</div><div class="line"><a name="l09077"></a><span class="lineno"> 9077</span>&#160;        region,</div><div class="line"><a name="l09078"></a><span class="lineno"> 9078</span>&#160;        src_row_pitch,</div><div class="line"><a name="l09079"></a><span class="lineno"> 9079</span>&#160;        src_slice_pitch,</div><div class="line"><a name="l09080"></a><span class="lineno"> 9080</span>&#160;        dst_row_pitch,</div><div class="line"><a name="l09081"></a><span class="lineno"> 9081</span>&#160;        dst_slice_pitch,</div><div class="line"><a name="l09082"></a><span class="lineno"> 9082</span>&#160;        events, </div><div class="line"><a name="l09083"></a><span class="lineno"> 9083</span>&#160;        event);</div><div class="line"><a name="l09084"></a><span class="lineno"> 9084</span>&#160;}</div><div class="line"><a name="l09085"></a><span class="lineno"> 9085</span>&#160;<span class="preprocessor">#endif // CL_HPP_TARGET_OPENCL_VERSION &gt;= 110</span></div><div class="line"><a name="l09086"></a><span class="lineno"> 9086</span>&#160;</div><div class="line"><a name="l09087"></a><span class="lineno"> 9087</span>&#160;<span class="keyword">inline</span> cl_int enqueueReadImage(</div><div class="line"><a name="l09088"></a><span class="lineno"> 9088</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; image,</div><div class="line"><a name="l09089"></a><span class="lineno"> 9089</span>&#160;    cl_bool blocking,</div><div class="line"><a name="l09090"></a><span class="lineno"> 9090</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; origin,</div><div class="line"><a name="l09091"></a><span class="lineno"> 9091</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l09092"></a><span class="lineno"> 9092</span>&#160;    size_type row_pitch,</div><div class="line"><a name="l09093"></a><span class="lineno"> 9093</span>&#160;    size_type slice_pitch,</div><div class="line"><a name="l09094"></a><span class="lineno"> 9094</span>&#160;    <span class="keywordtype">void</span>* ptr,</div><div class="line"><a name="l09095"></a><span class="lineno"> 9095</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l09096"></a><span class="lineno"> 9096</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL) </div><div class="line"><a name="l09097"></a><span class="lineno"> 9097</span>&#160;{</div><div class="line"><a name="l09098"></a><span class="lineno"> 9098</span>&#160;    cl_int error;</div><div class="line"><a name="l09099"></a><span class="lineno"> 9099</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l09100"></a><span class="lineno"> 9100</span>&#160;</div><div class="line"><a name="l09101"></a><span class="lineno"> 9101</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l09102"></a><span class="lineno"> 9102</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l09103"></a><span class="lineno"> 9103</span>&#160;    }</div><div class="line"><a name="l09104"></a><span class="lineno"> 9104</span>&#160;</div><div class="line"><a name="l09105"></a><span class="lineno"> 9105</span>&#160;    <span class="keywordflow">return</span> queue.enqueueReadImage(</div><div class="line"><a name="l09106"></a><span class="lineno"> 9106</span>&#160;        image,</div><div class="line"><a name="l09107"></a><span class="lineno"> 9107</span>&#160;        blocking,</div><div class="line"><a name="l09108"></a><span class="lineno"> 9108</span>&#160;        origin,</div><div class="line"><a name="l09109"></a><span class="lineno"> 9109</span>&#160;        region,</div><div class="line"><a name="l09110"></a><span class="lineno"> 9110</span>&#160;        row_pitch,</div><div class="line"><a name="l09111"></a><span class="lineno"> 9111</span>&#160;        slice_pitch,</div><div class="line"><a name="l09112"></a><span class="lineno"> 9112</span>&#160;        ptr,</div><div class="line"><a name="l09113"></a><span class="lineno"> 9113</span>&#160;        events, </div><div class="line"><a name="l09114"></a><span class="lineno"> 9114</span>&#160;        event);</div><div class="line"><a name="l09115"></a><span class="lineno"> 9115</span>&#160;}</div><div class="line"><a name="l09116"></a><span class="lineno"> 9116</span>&#160;</div><div class="line"><a name="l09117"></a><span class="lineno"> 9117</span>&#160;<span class="keyword">inline</span> cl_int enqueueWriteImage(</div><div class="line"><a name="l09118"></a><span class="lineno"> 9118</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; image,</div><div class="line"><a name="l09119"></a><span class="lineno"> 9119</span>&#160;    cl_bool blocking,</div><div class="line"><a name="l09120"></a><span class="lineno"> 9120</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; origin,</div><div class="line"><a name="l09121"></a><span class="lineno"> 9121</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l09122"></a><span class="lineno"> 9122</span>&#160;    size_type row_pitch,</div><div class="line"><a name="l09123"></a><span class="lineno"> 9123</span>&#160;    size_type slice_pitch,</div><div class="line"><a name="l09124"></a><span class="lineno"> 9124</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">void</span>* ptr,</div><div class="line"><a name="l09125"></a><span class="lineno"> 9125</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l09126"></a><span class="lineno"> 9126</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l09127"></a><span class="lineno"> 9127</span>&#160;{</div><div class="line"><a name="l09128"></a><span class="lineno"> 9128</span>&#160;    cl_int error;</div><div class="line"><a name="l09129"></a><span class="lineno"> 9129</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l09130"></a><span class="lineno"> 9130</span>&#160;</div><div class="line"><a name="l09131"></a><span class="lineno"> 9131</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l09132"></a><span class="lineno"> 9132</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l09133"></a><span class="lineno"> 9133</span>&#160;    }</div><div class="line"><a name="l09134"></a><span class="lineno"> 9134</span>&#160;</div><div class="line"><a name="l09135"></a><span class="lineno"> 9135</span>&#160;    <span class="keywordflow">return</span> queue.enqueueWriteImage(</div><div class="line"><a name="l09136"></a><span class="lineno"> 9136</span>&#160;        image,</div><div class="line"><a name="l09137"></a><span class="lineno"> 9137</span>&#160;        blocking,</div><div class="line"><a name="l09138"></a><span class="lineno"> 9138</span>&#160;        origin,</div><div class="line"><a name="l09139"></a><span class="lineno"> 9139</span>&#160;        region,</div><div class="line"><a name="l09140"></a><span class="lineno"> 9140</span>&#160;        row_pitch,</div><div class="line"><a name="l09141"></a><span class="lineno"> 9141</span>&#160;        slice_pitch,</div><div class="line"><a name="l09142"></a><span class="lineno"> 9142</span>&#160;        ptr,</div><div class="line"><a name="l09143"></a><span class="lineno"> 9143</span>&#160;        events, </div><div class="line"><a name="l09144"></a><span class="lineno"> 9144</span>&#160;        event);</div><div class="line"><a name="l09145"></a><span class="lineno"> 9145</span>&#160;}</div><div class="line"><a name="l09146"></a><span class="lineno"> 9146</span>&#160;</div><div class="line"><a name="l09147"></a><span class="lineno"> 9147</span>&#160;<span class="keyword">inline</span> cl_int enqueueCopyImage(</div><div class="line"><a name="l09148"></a><span class="lineno"> 9148</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; src,</div><div class="line"><a name="l09149"></a><span class="lineno"> 9149</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; dst,</div><div class="line"><a name="l09150"></a><span class="lineno"> 9150</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; src_origin,</div><div class="line"><a name="l09151"></a><span class="lineno"> 9151</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; dst_origin,</div><div class="line"><a name="l09152"></a><span class="lineno"> 9152</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l09153"></a><span class="lineno"> 9153</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l09154"></a><span class="lineno"> 9154</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l09155"></a><span class="lineno"> 9155</span>&#160;{</div><div class="line"><a name="l09156"></a><span class="lineno"> 9156</span>&#160;    cl_int error;</div><div class="line"><a name="l09157"></a><span class="lineno"> 9157</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l09158"></a><span class="lineno"> 9158</span>&#160;</div><div class="line"><a name="l09159"></a><span class="lineno"> 9159</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l09160"></a><span class="lineno"> 9160</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l09161"></a><span class="lineno"> 9161</span>&#160;    }</div><div class="line"><a name="l09162"></a><span class="lineno"> 9162</span>&#160;</div><div class="line"><a name="l09163"></a><span class="lineno"> 9163</span>&#160;    <span class="keywordflow">return</span> queue.enqueueCopyImage(</div><div class="line"><a name="l09164"></a><span class="lineno"> 9164</span>&#160;        src,</div><div class="line"><a name="l09165"></a><span class="lineno"> 9165</span>&#160;        dst,</div><div class="line"><a name="l09166"></a><span class="lineno"> 9166</span>&#160;        src_origin,</div><div class="line"><a name="l09167"></a><span class="lineno"> 9167</span>&#160;        dst_origin,</div><div class="line"><a name="l09168"></a><span class="lineno"> 9168</span>&#160;        region,</div><div class="line"><a name="l09169"></a><span class="lineno"> 9169</span>&#160;        events,</div><div class="line"><a name="l09170"></a><span class="lineno"> 9170</span>&#160;        event);</div><div class="line"><a name="l09171"></a><span class="lineno"> 9171</span>&#160;}</div><div class="line"><a name="l09172"></a><span class="lineno"> 9172</span>&#160;</div><div class="line"><a name="l09173"></a><span class="lineno"> 9173</span>&#160;<span class="keyword">inline</span> cl_int enqueueCopyImageToBuffer(</div><div class="line"><a name="l09174"></a><span class="lineno"> 9174</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; src,</div><div class="line"><a name="l09175"></a><span class="lineno"> 9175</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; dst,</div><div class="line"><a name="l09176"></a><span class="lineno"> 9176</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; src_origin,</div><div class="line"><a name="l09177"></a><span class="lineno"> 9177</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l09178"></a><span class="lineno"> 9178</span>&#160;    size_type dst_offset,</div><div class="line"><a name="l09179"></a><span class="lineno"> 9179</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l09180"></a><span class="lineno"> 9180</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l09181"></a><span class="lineno"> 9181</span>&#160;{</div><div class="line"><a name="l09182"></a><span class="lineno"> 9182</span>&#160;    cl_int error;</div><div class="line"><a name="l09183"></a><span class="lineno"> 9183</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l09184"></a><span class="lineno"> 9184</span>&#160;</div><div class="line"><a name="l09185"></a><span class="lineno"> 9185</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l09186"></a><span class="lineno"> 9186</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l09187"></a><span class="lineno"> 9187</span>&#160;    }</div><div class="line"><a name="l09188"></a><span class="lineno"> 9188</span>&#160;</div><div class="line"><a name="l09189"></a><span class="lineno"> 9189</span>&#160;    <span class="keywordflow">return</span> queue.enqueueCopyImageToBuffer(</div><div class="line"><a name="l09190"></a><span class="lineno"> 9190</span>&#160;        src,</div><div class="line"><a name="l09191"></a><span class="lineno"> 9191</span>&#160;        dst,</div><div class="line"><a name="l09192"></a><span class="lineno"> 9192</span>&#160;        src_origin,</div><div class="line"><a name="l09193"></a><span class="lineno"> 9193</span>&#160;        region,</div><div class="line"><a name="l09194"></a><span class="lineno"> 9194</span>&#160;        dst_offset,</div><div class="line"><a name="l09195"></a><span class="lineno"> 9195</span>&#160;        events,</div><div class="line"><a name="l09196"></a><span class="lineno"> 9196</span>&#160;        event);</div><div class="line"><a name="l09197"></a><span class="lineno"> 9197</span>&#160;}</div><div class="line"><a name="l09198"></a><span class="lineno"> 9198</span>&#160;</div><div class="line"><a name="l09199"></a><span class="lineno"> 9199</span>&#160;<span class="keyword">inline</span> cl_int enqueueCopyBufferToImage(</div><div class="line"><a name="l09200"></a><span class="lineno"> 9200</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_buffer.html">Buffer</a>&amp; src,</div><div class="line"><a name="l09201"></a><span class="lineno"> 9201</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_image.html">Image</a>&amp; dst,</div><div class="line"><a name="l09202"></a><span class="lineno"> 9202</span>&#160;    size_type src_offset,</div><div class="line"><a name="l09203"></a><span class="lineno"> 9203</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; dst_origin,</div><div class="line"><a name="l09204"></a><span class="lineno"> 9204</span>&#160;    <span class="keyword">const</span> array&lt;size_type, 3&gt;&amp; region,</div><div class="line"><a name="l09205"></a><span class="lineno"> 9205</span>&#160;    <span class="keyword">const</span> vector&lt;Event&gt;* events = NULL,</div><div class="line"><a name="l09206"></a><span class="lineno"> 9206</span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a>* event = NULL)</div><div class="line"><a name="l09207"></a><span class="lineno"> 9207</span>&#160;{</div><div class="line"><a name="l09208"></a><span class="lineno"> 9208</span>&#160;    cl_int error;</div><div class="line"><a name="l09209"></a><span class="lineno"> 9209</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l09210"></a><span class="lineno"> 9210</span>&#160;</div><div class="line"><a name="l09211"></a><span class="lineno"> 9211</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l09212"></a><span class="lineno"> 9212</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l09213"></a><span class="lineno"> 9213</span>&#160;    }</div><div class="line"><a name="l09214"></a><span class="lineno"> 9214</span>&#160;</div><div class="line"><a name="l09215"></a><span class="lineno"> 9215</span>&#160;    <span class="keywordflow">return</span> queue.enqueueCopyBufferToImage(</div><div class="line"><a name="l09216"></a><span class="lineno"> 9216</span>&#160;        src,</div><div class="line"><a name="l09217"></a><span class="lineno"> 9217</span>&#160;        dst,</div><div class="line"><a name="l09218"></a><span class="lineno"> 9218</span>&#160;        src_offset,</div><div class="line"><a name="l09219"></a><span class="lineno"> 9219</span>&#160;        dst_origin,</div><div class="line"><a name="l09220"></a><span class="lineno"> 9220</span>&#160;        region,</div><div class="line"><a name="l09221"></a><span class="lineno"> 9221</span>&#160;        events,</div><div class="line"><a name="l09222"></a><span class="lineno"> 9222</span>&#160;        event);</div><div class="line"><a name="l09223"></a><span class="lineno"> 9223</span>&#160;}</div><div class="line"><a name="l09224"></a><span class="lineno"> 9224</span>&#160;</div><div class="line"><a name="l09225"></a><span class="lineno"> 9225</span>&#160;</div><div class="line"><a name="l09226"></a><span class="lineno"> 9226</span>&#160;<span class="keyword">inline</span> cl_int flush(<span class="keywordtype">void</span>)</div><div class="line"><a name="l09227"></a><span class="lineno"> 9227</span>&#160;{</div><div class="line"><a name="l09228"></a><span class="lineno"> 9228</span>&#160;    cl_int error;</div><div class="line"><a name="l09229"></a><span class="lineno"> 9229</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l09230"></a><span class="lineno"> 9230</span>&#160;</div><div class="line"><a name="l09231"></a><span class="lineno"> 9231</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l09232"></a><span class="lineno"> 9232</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l09233"></a><span class="lineno"> 9233</span>&#160;    }</div><div class="line"><a name="l09234"></a><span class="lineno"> 9234</span>&#160;</div><div class="line"><a name="l09235"></a><span class="lineno"> 9235</span>&#160;    <span class="keywordflow">return</span> queue.flush();</div><div class="line"><a name="l09236"></a><span class="lineno"> 9236</span>&#160;}</div><div class="line"><a name="l09237"></a><span class="lineno"> 9237</span>&#160;</div><div class="line"><a name="l09238"></a><span class="lineno"> 9238</span>&#160;<span class="keyword">inline</span> cl_int finish(<span class="keywordtype">void</span>)</div><div class="line"><a name="l09239"></a><span class="lineno"> 9239</span>&#160;{</div><div class="line"><a name="l09240"></a><span class="lineno"> 9240</span>&#160;    cl_int error;</div><div class="line"><a name="l09241"></a><span class="lineno"> 9241</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue = CommandQueue::getDefault(&amp;error);</div><div class="line"><a name="l09242"></a><span class="lineno"> 9242</span>&#160;</div><div class="line"><a name="l09243"></a><span class="lineno"> 9243</span>&#160;    <span class="keywordflow">if</span> (error != CL_SUCCESS) {</div><div class="line"><a name="l09244"></a><span class="lineno"> 9244</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l09245"></a><span class="lineno"> 9245</span>&#160;    } </div><div class="line"><a name="l09246"></a><span class="lineno"> 9246</span>&#160;</div><div class="line"><a name="l09247"></a><span class="lineno"> 9247</span>&#160;</div><div class="line"><a name="l09248"></a><span class="lineno"> 9248</span>&#160;    <span class="keywordflow">return</span> queue.finish();</div><div class="line"><a name="l09249"></a><span class="lineno"> 9249</span>&#160;}</div><div class="line"><a name="l09250"></a><span class="lineno"> 9250</span>&#160;</div><div class="line"><a name="l09251"></a><span class="lineno"><a class="line" href="classcl_1_1_enqueue_args.html"> 9251</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a></div><div class="line"><a name="l09252"></a><span class="lineno"> 9252</span>&#160;{</div><div class="line"><a name="l09253"></a><span class="lineno"> 9253</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l09254"></a><span class="lineno"> 9254</span>&#160;    <a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> queue_;</div><div class="line"><a name="l09255"></a><span class="lineno"> 9255</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> offset_;</div><div class="line"><a name="l09256"></a><span class="lineno"> 9256</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global_;</div><div class="line"><a name="l09257"></a><span class="lineno"> 9257</span>&#160;    <span class="keyword">const</span> <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local_;</div><div class="line"><a name="l09258"></a><span class="lineno"> 9258</span>&#160;    vector&lt;Event&gt; events_;</div><div class="line"><a name="l09259"></a><span class="lineno"> 9259</span>&#160;</div><div class="line"><a name="l09260"></a><span class="lineno"> 9260</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span>... Ts&gt;</div><div class="line"><a name="l09261"></a><span class="lineno"> 9261</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classcl_1_1_kernel_functor.html">KernelFunctor</a>;</div><div class="line"><a name="l09262"></a><span class="lineno"> 9262</span>&#160;</div><div class="line"><a name="l09263"></a><span class="lineno"> 9263</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l09264"></a><span class="lineno"> 9264</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global) : </div><div class="line"><a name="l09265"></a><span class="lineno"> 9265</span>&#160;      queue_(CommandQueue::getDefault()),</div><div class="line"><a name="l09266"></a><span class="lineno"> 9266</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09267"></a><span class="lineno"> 9267</span>&#160;      global_(global),</div><div class="line"><a name="l09268"></a><span class="lineno"> 9268</span>&#160;      local_(NullRange)</div><div class="line"><a name="l09269"></a><span class="lineno"> 9269</span>&#160;    {</div><div class="line"><a name="l09270"></a><span class="lineno"> 9270</span>&#160;</div><div class="line"><a name="l09271"></a><span class="lineno"> 9271</span>&#160;    }</div><div class="line"><a name="l09272"></a><span class="lineno"> 9272</span>&#160;</div><div class="line"><a name="l09273"></a><span class="lineno"> 9273</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09274"></a><span class="lineno"> 9274</span>&#160;      queue_(CommandQueue::getDefault()),</div><div class="line"><a name="l09275"></a><span class="lineno"> 9275</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09276"></a><span class="lineno"> 9276</span>&#160;      global_(global),</div><div class="line"><a name="l09277"></a><span class="lineno"> 9277</span>&#160;      local_(local)</div><div class="line"><a name="l09278"></a><span class="lineno"> 9278</span>&#160;    {</div><div class="line"><a name="l09279"></a><span class="lineno"> 9279</span>&#160;</div><div class="line"><a name="l09280"></a><span class="lineno"> 9280</span>&#160;    }</div><div class="line"><a name="l09281"></a><span class="lineno"> 9281</span>&#160;</div><div class="line"><a name="l09282"></a><span class="lineno"> 9282</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> offset, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09283"></a><span class="lineno"> 9283</span>&#160;      queue_(CommandQueue::getDefault()),</div><div class="line"><a name="l09284"></a><span class="lineno"> 9284</span>&#160;      offset_(offset), </div><div class="line"><a name="l09285"></a><span class="lineno"> 9285</span>&#160;      global_(global),</div><div class="line"><a name="l09286"></a><span class="lineno"> 9286</span>&#160;      local_(local)</div><div class="line"><a name="l09287"></a><span class="lineno"> 9287</span>&#160;    {</div><div class="line"><a name="l09288"></a><span class="lineno"> 9288</span>&#160;</div><div class="line"><a name="l09289"></a><span class="lineno"> 9289</span>&#160;    }</div><div class="line"><a name="l09290"></a><span class="lineno"> 9290</span>&#160;</div><div class="line"><a name="l09291"></a><span class="lineno"> 9291</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_event.html">Event</a> e, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global) : </div><div class="line"><a name="l09292"></a><span class="lineno"> 9292</span>&#160;      queue_(CommandQueue::getDefault()),</div><div class="line"><a name="l09293"></a><span class="lineno"> 9293</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09294"></a><span class="lineno"> 9294</span>&#160;      global_(global),</div><div class="line"><a name="l09295"></a><span class="lineno"> 9295</span>&#160;      local_(NullRange)</div><div class="line"><a name="l09296"></a><span class="lineno"> 9296</span>&#160;    {</div><div class="line"><a name="l09297"></a><span class="lineno"> 9297</span>&#160;        events_.push_back(e);</div><div class="line"><a name="l09298"></a><span class="lineno"> 9298</span>&#160;    }</div><div class="line"><a name="l09299"></a><span class="lineno"> 9299</span>&#160;</div><div class="line"><a name="l09300"></a><span class="lineno"> 9300</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_event.html">Event</a> e, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09301"></a><span class="lineno"> 9301</span>&#160;      queue_(CommandQueue::getDefault()),</div><div class="line"><a name="l09302"></a><span class="lineno"> 9302</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09303"></a><span class="lineno"> 9303</span>&#160;      global_(global),</div><div class="line"><a name="l09304"></a><span class="lineno"> 9304</span>&#160;      local_(local)</div><div class="line"><a name="l09305"></a><span class="lineno"> 9305</span>&#160;    {</div><div class="line"><a name="l09306"></a><span class="lineno"> 9306</span>&#160;        events_.push_back(e);</div><div class="line"><a name="l09307"></a><span class="lineno"> 9307</span>&#160;    }</div><div class="line"><a name="l09308"></a><span class="lineno"> 9308</span>&#160;</div><div class="line"><a name="l09309"></a><span class="lineno"> 9309</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_event.html">Event</a> e, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> offset, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09310"></a><span class="lineno"> 9310</span>&#160;      queue_(CommandQueue::getDefault()),</div><div class="line"><a name="l09311"></a><span class="lineno"> 9311</span>&#160;      offset_(offset), </div><div class="line"><a name="l09312"></a><span class="lineno"> 9312</span>&#160;      global_(global),</div><div class="line"><a name="l09313"></a><span class="lineno"> 9313</span>&#160;      local_(local)</div><div class="line"><a name="l09314"></a><span class="lineno"> 9314</span>&#160;    {</div><div class="line"><a name="l09315"></a><span class="lineno"> 9315</span>&#160;        events_.push_back(e);</div><div class="line"><a name="l09316"></a><span class="lineno"> 9316</span>&#160;    }</div><div class="line"><a name="l09317"></a><span class="lineno"> 9317</span>&#160;</div><div class="line"><a name="l09318"></a><span class="lineno"> 9318</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<span class="keyword">const</span> vector&lt;Event&gt; &amp;events, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global) : </div><div class="line"><a name="l09319"></a><span class="lineno"> 9319</span>&#160;      queue_(CommandQueue::getDefault()),</div><div class="line"><a name="l09320"></a><span class="lineno"> 9320</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09321"></a><span class="lineno"> 9321</span>&#160;      global_(global),</div><div class="line"><a name="l09322"></a><span class="lineno"> 9322</span>&#160;      local_(NullRange),</div><div class="line"><a name="l09323"></a><span class="lineno"> 9323</span>&#160;      events_(events)</div><div class="line"><a name="l09324"></a><span class="lineno"> 9324</span>&#160;    {</div><div class="line"><a name="l09325"></a><span class="lineno"> 9325</span>&#160;</div><div class="line"><a name="l09326"></a><span class="lineno"> 9326</span>&#160;    }</div><div class="line"><a name="l09327"></a><span class="lineno"> 9327</span>&#160;</div><div class="line"><a name="l09328"></a><span class="lineno"> 9328</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<span class="keyword">const</span> vector&lt;Event&gt; &amp;events, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09329"></a><span class="lineno"> 9329</span>&#160;      queue_(CommandQueue::getDefault()),</div><div class="line"><a name="l09330"></a><span class="lineno"> 9330</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09331"></a><span class="lineno"> 9331</span>&#160;      global_(global),</div><div class="line"><a name="l09332"></a><span class="lineno"> 9332</span>&#160;      local_(local),</div><div class="line"><a name="l09333"></a><span class="lineno"> 9333</span>&#160;      events_(events)</div><div class="line"><a name="l09334"></a><span class="lineno"> 9334</span>&#160;    {</div><div class="line"><a name="l09335"></a><span class="lineno"> 9335</span>&#160;</div><div class="line"><a name="l09336"></a><span class="lineno"> 9336</span>&#160;    }</div><div class="line"><a name="l09337"></a><span class="lineno"> 9337</span>&#160;</div><div class="line"><a name="l09338"></a><span class="lineno"> 9338</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<span class="keyword">const</span> vector&lt;Event&gt; &amp;events, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> offset, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09339"></a><span class="lineno"> 9339</span>&#160;      queue_(CommandQueue::getDefault()),</div><div class="line"><a name="l09340"></a><span class="lineno"> 9340</span>&#160;      offset_(offset), </div><div class="line"><a name="l09341"></a><span class="lineno"> 9341</span>&#160;      global_(global),</div><div class="line"><a name="l09342"></a><span class="lineno"> 9342</span>&#160;      local_(local),</div><div class="line"><a name="l09343"></a><span class="lineno"> 9343</span>&#160;      events_(events)</div><div class="line"><a name="l09344"></a><span class="lineno"> 9344</span>&#160;    {</div><div class="line"><a name="l09345"></a><span class="lineno"> 9345</span>&#160;</div><div class="line"><a name="l09346"></a><span class="lineno"> 9346</span>&#160;    }</div><div class="line"><a name="l09347"></a><span class="lineno"> 9347</span>&#160;</div><div class="line"><a name="l09348"></a><span class="lineno"> 9348</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global) : </div><div class="line"><a name="l09349"></a><span class="lineno"> 9349</span>&#160;      queue_(queue),</div><div class="line"><a name="l09350"></a><span class="lineno"> 9350</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09351"></a><span class="lineno"> 9351</span>&#160;      global_(global),</div><div class="line"><a name="l09352"></a><span class="lineno"> 9352</span>&#160;      local_(NullRange)</div><div class="line"><a name="l09353"></a><span class="lineno"> 9353</span>&#160;    {</div><div class="line"><a name="l09354"></a><span class="lineno"> 9354</span>&#160;</div><div class="line"><a name="l09355"></a><span class="lineno"> 9355</span>&#160;    }</div><div class="line"><a name="l09356"></a><span class="lineno"> 9356</span>&#160;</div><div class="line"><a name="l09357"></a><span class="lineno"> 9357</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09358"></a><span class="lineno"> 9358</span>&#160;      queue_(queue),</div><div class="line"><a name="l09359"></a><span class="lineno"> 9359</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09360"></a><span class="lineno"> 9360</span>&#160;      global_(global),</div><div class="line"><a name="l09361"></a><span class="lineno"> 9361</span>&#160;      local_(local)</div><div class="line"><a name="l09362"></a><span class="lineno"> 9362</span>&#160;    {</div><div class="line"><a name="l09363"></a><span class="lineno"> 9363</span>&#160;</div><div class="line"><a name="l09364"></a><span class="lineno"> 9364</span>&#160;    }</div><div class="line"><a name="l09365"></a><span class="lineno"> 9365</span>&#160;</div><div class="line"><a name="l09366"></a><span class="lineno"> 9366</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> offset, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09367"></a><span class="lineno"> 9367</span>&#160;      queue_(queue),</div><div class="line"><a name="l09368"></a><span class="lineno"> 9368</span>&#160;      offset_(offset), </div><div class="line"><a name="l09369"></a><span class="lineno"> 9369</span>&#160;      global_(global),</div><div class="line"><a name="l09370"></a><span class="lineno"> 9370</span>&#160;      local_(local)</div><div class="line"><a name="l09371"></a><span class="lineno"> 9371</span>&#160;    {</div><div class="line"><a name="l09372"></a><span class="lineno"> 9372</span>&#160;</div><div class="line"><a name="l09373"></a><span class="lineno"> 9373</span>&#160;    }</div><div class="line"><a name="l09374"></a><span class="lineno"> 9374</span>&#160;</div><div class="line"><a name="l09375"></a><span class="lineno"> 9375</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, <a class="code" href="classcl_1_1_event.html">Event</a> e, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global) : </div><div class="line"><a name="l09376"></a><span class="lineno"> 9376</span>&#160;      queue_(queue),</div><div class="line"><a name="l09377"></a><span class="lineno"> 9377</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09378"></a><span class="lineno"> 9378</span>&#160;      global_(global),</div><div class="line"><a name="l09379"></a><span class="lineno"> 9379</span>&#160;      local_(NullRange)</div><div class="line"><a name="l09380"></a><span class="lineno"> 9380</span>&#160;    {</div><div class="line"><a name="l09381"></a><span class="lineno"> 9381</span>&#160;        events_.push_back(e);</div><div class="line"><a name="l09382"></a><span class="lineno"> 9382</span>&#160;    }</div><div class="line"><a name="l09383"></a><span class="lineno"> 9383</span>&#160;</div><div class="line"><a name="l09384"></a><span class="lineno"> 9384</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, <a class="code" href="classcl_1_1_event.html">Event</a> e, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09385"></a><span class="lineno"> 9385</span>&#160;      queue_(queue),</div><div class="line"><a name="l09386"></a><span class="lineno"> 9386</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09387"></a><span class="lineno"> 9387</span>&#160;      global_(global),</div><div class="line"><a name="l09388"></a><span class="lineno"> 9388</span>&#160;      local_(local)</div><div class="line"><a name="l09389"></a><span class="lineno"> 9389</span>&#160;    {</div><div class="line"><a name="l09390"></a><span class="lineno"> 9390</span>&#160;        events_.push_back(e);</div><div class="line"><a name="l09391"></a><span class="lineno"> 9391</span>&#160;    }</div><div class="line"><a name="l09392"></a><span class="lineno"> 9392</span>&#160;</div><div class="line"><a name="l09393"></a><span class="lineno"> 9393</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, <a class="code" href="classcl_1_1_event.html">Event</a> e, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> offset, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09394"></a><span class="lineno"> 9394</span>&#160;      queue_(queue),</div><div class="line"><a name="l09395"></a><span class="lineno"> 9395</span>&#160;      offset_(offset), </div><div class="line"><a name="l09396"></a><span class="lineno"> 9396</span>&#160;      global_(global),</div><div class="line"><a name="l09397"></a><span class="lineno"> 9397</span>&#160;      local_(local)</div><div class="line"><a name="l09398"></a><span class="lineno"> 9398</span>&#160;    {</div><div class="line"><a name="l09399"></a><span class="lineno"> 9399</span>&#160;        events_.push_back(e);</div><div class="line"><a name="l09400"></a><span class="lineno"> 9400</span>&#160;    }</div><div class="line"><a name="l09401"></a><span class="lineno"> 9401</span>&#160;</div><div class="line"><a name="l09402"></a><span class="lineno"> 9402</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, <span class="keyword">const</span> vector&lt;Event&gt; &amp;events, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global) : </div><div class="line"><a name="l09403"></a><span class="lineno"> 9403</span>&#160;      queue_(queue),</div><div class="line"><a name="l09404"></a><span class="lineno"> 9404</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09405"></a><span class="lineno"> 9405</span>&#160;      global_(global),</div><div class="line"><a name="l09406"></a><span class="lineno"> 9406</span>&#160;      local_(NullRange),</div><div class="line"><a name="l09407"></a><span class="lineno"> 9407</span>&#160;      events_(events)</div><div class="line"><a name="l09408"></a><span class="lineno"> 9408</span>&#160;    {</div><div class="line"><a name="l09409"></a><span class="lineno"> 9409</span>&#160;</div><div class="line"><a name="l09410"></a><span class="lineno"> 9410</span>&#160;    }</div><div class="line"><a name="l09411"></a><span class="lineno"> 9411</span>&#160;</div><div class="line"><a name="l09412"></a><span class="lineno"> 9412</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, <span class="keyword">const</span> vector&lt;Event&gt; &amp;events, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09413"></a><span class="lineno"> 9413</span>&#160;      queue_(queue),</div><div class="line"><a name="l09414"></a><span class="lineno"> 9414</span>&#160;      offset_(NullRange), </div><div class="line"><a name="l09415"></a><span class="lineno"> 9415</span>&#160;      global_(global),</div><div class="line"><a name="l09416"></a><span class="lineno"> 9416</span>&#160;      local_(local),</div><div class="line"><a name="l09417"></a><span class="lineno"> 9417</span>&#160;      events_(events)</div><div class="line"><a name="l09418"></a><span class="lineno"> 9418</span>&#160;    {</div><div class="line"><a name="l09419"></a><span class="lineno"> 9419</span>&#160;</div><div class="line"><a name="l09420"></a><span class="lineno"> 9420</span>&#160;    }</div><div class="line"><a name="l09421"></a><span class="lineno"> 9421</span>&#160;</div><div class="line"><a name="l09422"></a><span class="lineno"> 9422</span>&#160;    <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>(<a class="code" href="classcl_1_1_command_queue.html">CommandQueue</a> &amp;queue, <span class="keyword">const</span> vector&lt;Event&gt; &amp;events, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> offset, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> global, <a class="code" href="classcl_1_1_n_d_range.html">NDRange</a> local) : </div><div class="line"><a name="l09423"></a><span class="lineno"> 9423</span>&#160;      queue_(queue),</div><div class="line"><a name="l09424"></a><span class="lineno"> 9424</span>&#160;      offset_(offset), </div><div class="line"><a name="l09425"></a><span class="lineno"> 9425</span>&#160;      global_(global),</div><div class="line"><a name="l09426"></a><span class="lineno"> 9426</span>&#160;      local_(local),</div><div class="line"><a name="l09427"></a><span class="lineno"> 9427</span>&#160;      events_(events)</div><div class="line"><a name="l09428"></a><span class="lineno"> 9428</span>&#160;    {</div><div class="line"><a name="l09429"></a><span class="lineno"> 9429</span>&#160;</div><div class="line"><a name="l09430"></a><span class="lineno"> 9430</span>&#160;    }</div><div class="line"><a name="l09431"></a><span class="lineno"> 9431</span>&#160;};</div><div class="line"><a name="l09432"></a><span class="lineno"> 9432</span>&#160;</div><div class="line"><a name="l09433"></a><span class="lineno"> 9433</span>&#160;</div><div class="line"><a name="l09434"></a><span class="lineno"> 9434</span>&#160;<span class="comment">//----------------------------------------------------------------------------------------------</span></div><div class="line"><a name="l09435"></a><span class="lineno"> 9435</span>&#160;</div><div class="line"><a name="l09436"></a><span class="lineno"> 9436</span>&#160;</div><div class="line"><a name="l09441"></a><span class="lineno"> 9441</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span>... Ts&gt;</div><div class="line"><a name="l09442"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel_functor.html"> 9442</a></span>&#160;<span class="keyword">class </span><a class="code" href="classcl_1_1_kernel_functor.html">KernelFunctor</a></div><div class="line"><a name="l09443"></a><span class="lineno"> 9443</span>&#160;{</div><div class="line"><a name="l09444"></a><span class="lineno"> 9444</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l09445"></a><span class="lineno"> 9445</span>&#160;    <a class="code" href="classcl_1_1_kernel.html">Kernel</a> kernel_;</div><div class="line"><a name="l09446"></a><span class="lineno"> 9446</span>&#160;</div><div class="line"><a name="l09447"></a><span class="lineno"> 9447</span>&#160;    <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> index, <span class="keyword">typename</span> T0, <span class="keyword">typename</span>... T1s&gt;</div><div class="line"><a name="l09448"></a><span class="lineno"> 9448</span>&#160;    <span class="keywordtype">void</span> setArgs(T0&amp;&amp; t0, T1s&amp;&amp;... t1s)</div><div class="line"><a name="l09449"></a><span class="lineno"> 9449</span>&#160;    {</div><div class="line"><a name="l09450"></a><span class="lineno"> 9450</span>&#160;        kernel_.<a class="code" href="classcl_1_1_kernel.html#a3ec081fb9656b0780d808563256dfeff">setArg</a>(index, t0);</div><div class="line"><a name="l09451"></a><span class="lineno"> 9451</span>&#160;        setArgs&lt;index + 1, T1s...&gt;(std::forward&lt;T1s&gt;(t1s)...);</div><div class="line"><a name="l09452"></a><span class="lineno"> 9452</span>&#160;    }</div><div class="line"><a name="l09453"></a><span class="lineno"> 9453</span>&#160;</div><div class="line"><a name="l09454"></a><span class="lineno"> 9454</span>&#160;    <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> index, <span class="keyword">typename</span> T0&gt;</div><div class="line"><a name="l09455"></a><span class="lineno"> 9455</span>&#160;    <span class="keywordtype">void</span> setArgs(T0&amp;&amp; t0)</div><div class="line"><a name="l09456"></a><span class="lineno"> 9456</span>&#160;    {</div><div class="line"><a name="l09457"></a><span class="lineno"> 9457</span>&#160;        kernel_.<a class="code" href="classcl_1_1_kernel.html#a3ec081fb9656b0780d808563256dfeff">setArg</a>(index, t0);</div><div class="line"><a name="l09458"></a><span class="lineno"> 9458</span>&#160;    }</div><div class="line"><a name="l09459"></a><span class="lineno"> 9459</span>&#160;</div><div class="line"><a name="l09460"></a><span class="lineno"> 9460</span>&#160;    <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> index&gt;</div><div class="line"><a name="l09461"></a><span class="lineno"> 9461</span>&#160;    <span class="keywordtype">void</span> setArgs()</div><div class="line"><a name="l09462"></a><span class="lineno"> 9462</span>&#160;    {</div><div class="line"><a name="l09463"></a><span class="lineno"> 9463</span>&#160;    }</div><div class="line"><a name="l09464"></a><span class="lineno"> 9464</span>&#160;</div><div class="line"><a name="l09465"></a><span class="lineno"> 9465</span>&#160;</div><div class="line"><a name="l09466"></a><span class="lineno"> 9466</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l09467"></a><span class="lineno"> 9467</span>&#160;    <a class="code" href="classcl_1_1_kernel_functor.html">KernelFunctor</a>(<a class="code" href="classcl_1_1_kernel.html">Kernel</a> kernel) : kernel_(kernel)</div><div class="line"><a name="l09468"></a><span class="lineno"> 9468</span>&#160;    {}</div><div class="line"><a name="l09469"></a><span class="lineno"> 9469</span>&#160;</div><div class="line"><a name="l09470"></a><span class="lineno"> 9470</span>&#160;    <a class="code" href="classcl_1_1_kernel_functor.html">KernelFunctor</a>(</div><div class="line"><a name="l09471"></a><span class="lineno"> 9471</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_program.html">Program</a>&amp; program,</div><div class="line"><a name="l09472"></a><span class="lineno"> 9472</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">string</span> name,</div><div class="line"><a name="l09473"></a><span class="lineno"> 9473</span>&#160;        cl_int * err = NULL) :</div><div class="line"><a name="l09474"></a><span class="lineno"> 9474</span>&#160;        kernel_(program, name.c_str(), err)</div><div class="line"><a name="l09475"></a><span class="lineno"> 9475</span>&#160;    {}</div><div class="line"><a name="l09476"></a><span class="lineno"> 9476</span>&#160;</div><div class="line"><a name="l09478"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel_functor.html#a925e6594f59e5e8038770efa2bd4b532"> 9478</a></span>&#160;    <span class="keyword">typedef</span> <a class="code" href="classcl_1_1_event.html">Event</a> <a class="code" href="classcl_1_1_kernel_functor.html#a925e6594f59e5e8038770efa2bd4b532">result_type</a>;</div><div class="line"><a name="l09479"></a><span class="lineno"> 9479</span>&#160;</div><div class="line"><a name="l09485"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel_functor.html#a03d94b7e13205bc28d0d8ee391e02a0a"> 9485</a></span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a> operator() (</div><div class="line"><a name="l09486"></a><span class="lineno"> 9486</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>&amp; args,</div><div class="line"><a name="l09487"></a><span class="lineno"> 9487</span>&#160;        Ts... ts)</div><div class="line"><a name="l09488"></a><span class="lineno"> 9488</span>&#160;    {</div><div class="line"><a name="l09489"></a><span class="lineno"> 9489</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a> event;</div><div class="line"><a name="l09490"></a><span class="lineno"> 9490</span>&#160;        setArgs&lt;0&gt;(std::forward&lt;Ts&gt;(ts)...);</div><div class="line"><a name="l09491"></a><span class="lineno"> 9491</span>&#160;        </div><div class="line"><a name="l09492"></a><span class="lineno"> 9492</span>&#160;        args.queue_.enqueueNDRangeKernel(</div><div class="line"><a name="l09493"></a><span class="lineno"> 9493</span>&#160;            kernel_,</div><div class="line"><a name="l09494"></a><span class="lineno"> 9494</span>&#160;            args.offset_,</div><div class="line"><a name="l09495"></a><span class="lineno"> 9495</span>&#160;            args.global_,</div><div class="line"><a name="l09496"></a><span class="lineno"> 9496</span>&#160;            args.local_,</div><div class="line"><a name="l09497"></a><span class="lineno"> 9497</span>&#160;            &amp;args.events_,</div><div class="line"><a name="l09498"></a><span class="lineno"> 9498</span>&#160;            &amp;event);</div><div class="line"><a name="l09499"></a><span class="lineno"> 9499</span>&#160;</div><div class="line"><a name="l09500"></a><span class="lineno"> 9500</span>&#160;        <span class="keywordflow">return</span> event;</div><div class="line"><a name="l09501"></a><span class="lineno"> 9501</span>&#160;    }</div><div class="line"><a name="l09502"></a><span class="lineno"> 9502</span>&#160;</div><div class="line"><a name="l09509"></a><span class="lineno"><a class="line" href="classcl_1_1_kernel_functor.html#a94a347dc04af6b06cf4354750853db6e"> 9509</a></span>&#160;    <a class="code" href="classcl_1_1_event.html">Event</a> operator() (</div><div class="line"><a name="l09510"></a><span class="lineno"> 9510</span>&#160;        <span class="keyword">const</span> <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>&amp; args,</div><div class="line"><a name="l09511"></a><span class="lineno"> 9511</span>&#160;        Ts... ts,</div><div class="line"><a name="l09512"></a><span class="lineno"> 9512</span>&#160;        cl_int &amp;error)</div><div class="line"><a name="l09513"></a><span class="lineno"> 9513</span>&#160;    {</div><div class="line"><a name="l09514"></a><span class="lineno"> 9514</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a> event;</div><div class="line"><a name="l09515"></a><span class="lineno"> 9515</span>&#160;        setArgs&lt;0&gt;(std::forward&lt;Ts&gt;(ts)...);</div><div class="line"><a name="l09516"></a><span class="lineno"> 9516</span>&#160;</div><div class="line"><a name="l09517"></a><span class="lineno"> 9517</span>&#160;        error = args.queue_.enqueueNDRangeKernel(</div><div class="line"><a name="l09518"></a><span class="lineno"> 9518</span>&#160;            kernel_,</div><div class="line"><a name="l09519"></a><span class="lineno"> 9519</span>&#160;            args.offset_,</div><div class="line"><a name="l09520"></a><span class="lineno"> 9520</span>&#160;            args.global_,</div><div class="line"><a name="l09521"></a><span class="lineno"> 9521</span>&#160;            args.local_,</div><div class="line"><a name="l09522"></a><span class="lineno"> 9522</span>&#160;            &amp;args.events_,</div><div class="line"><a name="l09523"></a><span class="lineno"> 9523</span>&#160;            &amp;event);</div><div class="line"><a name="l09524"></a><span class="lineno"> 9524</span>&#160;        </div><div class="line"><a name="l09525"></a><span class="lineno"> 9525</span>&#160;        <span class="keywordflow">return</span> event;</div><div class="line"><a name="l09526"></a><span class="lineno"> 9526</span>&#160;    }</div><div class="line"><a name="l09527"></a><span class="lineno"> 9527</span>&#160;</div><div class="line"><a name="l09528"></a><span class="lineno"> 9528</span>&#160;<span class="preprocessor">#if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l09529"></a><span class="lineno"> 9529</span>&#160;    cl_int setSVMPointers(<span class="keyword">const</span> vector&lt;void*&gt; &amp;pointerList)</div><div class="line"><a name="l09530"></a><span class="lineno"> 9530</span>&#160;    {</div><div class="line"><a name="l09531"></a><span class="lineno"> 9531</span>&#160;        <span class="keywordflow">return</span> kernel_.<a class="code" href="classcl_1_1_kernel.html#ada828235b52fc603d5b070544e93f469">setSVMPointers</a>(pointerList);</div><div class="line"><a name="l09532"></a><span class="lineno"> 9532</span>&#160;    }</div><div class="line"><a name="l09533"></a><span class="lineno"> 9533</span>&#160;</div><div class="line"><a name="l09534"></a><span class="lineno"> 9534</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T0, <span class="keyword">typename</span>... T1s&gt;</div><div class="line"><a name="l09535"></a><span class="lineno"> 9535</span>&#160;    cl_int setSVMPointers(<span class="keyword">const</span> T0 &amp;t0, T1s &amp;... ts)</div><div class="line"><a name="l09536"></a><span class="lineno"> 9536</span>&#160;    {</div><div class="line"><a name="l09537"></a><span class="lineno"> 9537</span>&#160;        <span class="keywordflow">return</span> kernel_.<a class="code" href="classcl_1_1_kernel.html#ada828235b52fc603d5b070544e93f469">setSVMPointers</a>(t0, ts...);</div><div class="line"><a name="l09538"></a><span class="lineno"> 9538</span>&#160;    }</div><div class="line"><a name="l09539"></a><span class="lineno"> 9539</span>&#160;<span class="preprocessor">#endif // #if CL_HPP_TARGET_OPENCL_VERSION &gt;= 200</span></div><div class="line"><a name="l09540"></a><span class="lineno"> 9540</span>&#160;</div><div class="line"><a name="l09541"></a><span class="lineno"> 9541</span>&#160;    <a class="code" href="classcl_1_1_kernel.html">Kernel</a> getKernel()</div><div class="line"><a name="l09542"></a><span class="lineno"> 9542</span>&#160;    {</div><div class="line"><a name="l09543"></a><span class="lineno"> 9543</span>&#160;        <span class="keywordflow">return</span> kernel_;</div><div class="line"><a name="l09544"></a><span class="lineno"> 9544</span>&#160;    }</div><div class="line"><a name="l09545"></a><span class="lineno"> 9545</span>&#160;};</div><div class="line"><a name="l09546"></a><span class="lineno"> 9546</span>&#160;</div><div class="line"><a name="l09547"></a><span class="lineno"> 9547</span>&#160;<span class="keyword">namespace </span>compatibility {</div><div class="line"><a name="l09552"></a><span class="lineno"> 9552</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span>... Ts&gt;</div><div class="line"><a name="l09553"></a><span class="lineno"><a class="line" href="structcl_1_1compatibility_1_1make__kernel.html"> 9553</a></span>&#160;    <span class="keyword">struct </span><a class="code" href="structcl_1_1compatibility_1_1make__kernel.html">make_kernel</a></div><div class="line"><a name="l09554"></a><span class="lineno"> 9554</span>&#160;    {</div><div class="line"><a name="l09555"></a><span class="lineno"> 9555</span>&#160;        <span class="keyword">typedef</span> <a class="code" href="classcl_1_1_kernel_functor.html">KernelFunctor</a>&lt;Ts...&gt; <a class="code" href="classcl_1_1_kernel_functor.html">FunctorType</a>;</div><div class="line"><a name="l09556"></a><span class="lineno"> 9556</span>&#160;</div><div class="line"><a name="l09557"></a><span class="lineno"> 9557</span>&#160;        <a class="code" href="classcl_1_1_kernel_functor.html">FunctorType</a> functor_;</div><div class="line"><a name="l09558"></a><span class="lineno"> 9558</span>&#160;</div><div class="line"><a name="l09559"></a><span class="lineno"> 9559</span>&#160;        <a class="code" href="structcl_1_1compatibility_1_1make__kernel.html">make_kernel</a>(</div><div class="line"><a name="l09560"></a><span class="lineno"> 9560</span>&#160;            <span class="keyword">const</span> <a class="code" href="classcl_1_1_program.html">Program</a>&amp; program,</div><div class="line"><a name="l09561"></a><span class="lineno"> 9561</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">string</span> name,</div><div class="line"><a name="l09562"></a><span class="lineno"> 9562</span>&#160;            cl_int * err = NULL) :</div><div class="line"><a name="l09563"></a><span class="lineno"> 9563</span>&#160;            functor_(<a class="code" href="classcl_1_1_kernel_functor.html">FunctorType</a>(program, name, err))</div><div class="line"><a name="l09564"></a><span class="lineno"> 9564</span>&#160;        {}</div><div class="line"><a name="l09565"></a><span class="lineno"> 9565</span>&#160;</div><div class="line"><a name="l09566"></a><span class="lineno"> 9566</span>&#160;        <a class="code" href="structcl_1_1compatibility_1_1make__kernel.html">make_kernel</a>(</div><div class="line"><a name="l09567"></a><span class="lineno"> 9567</span>&#160;            <span class="keyword">const</span> <a class="code" href="classcl_1_1_kernel.html">Kernel</a> kernel) :</div><div class="line"><a name="l09568"></a><span class="lineno"> 9568</span>&#160;            functor_(<a class="code" href="classcl_1_1_kernel_functor.html">FunctorType</a>(kernel))</div><div class="line"><a name="l09569"></a><span class="lineno"> 9569</span>&#160;        {}</div><div class="line"><a name="l09570"></a><span class="lineno"> 9570</span>&#160;</div><div class="line"><a name="l09572"></a><span class="lineno"><a class="line" href="structcl_1_1compatibility_1_1make__kernel.html#ab5a793302f7651ad151a1e4b585be5d4"> 9572</a></span>&#160;        <span class="keyword">typedef</span> <a class="code" href="classcl_1_1_event.html">Event</a> <a class="code" href="structcl_1_1compatibility_1_1make__kernel.html#ab5a793302f7651ad151a1e4b585be5d4">result_type</a>;</div><div class="line"><a name="l09573"></a><span class="lineno"> 9573</span>&#160;</div><div class="line"><a name="l09575"></a><span class="lineno"><a class="line" href="structcl_1_1compatibility_1_1make__kernel.html#aaa094f5455d73fae53eb99b374f05eec"> 9575</a></span>&#160;        <span class="keyword">typedef</span> <a class="code" href="classcl_1_1_event.html">Event</a> <a class="code" href="structcl_1_1compatibility_1_1make__kernel.html#aaa094f5455d73fae53eb99b374f05eec">type_</a>(</div><div class="line"><a name="l09576"></a><span class="lineno"> 9576</span>&#160;            <span class="keyword">const</span> <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>&amp;,</div><div class="line"><a name="l09577"></a><span class="lineno"> 9577</span>&#160;            Ts...);</div><div class="line"><a name="l09578"></a><span class="lineno"> 9578</span>&#160;</div><div class="line"><a name="l09579"></a><span class="lineno"> 9579</span>&#160;        <a class="code" href="classcl_1_1_event.html">Event</a> operator()(</div><div class="line"><a name="l09580"></a><span class="lineno"> 9580</span>&#160;            <span class="keyword">const</span> <a class="code" href="classcl_1_1_enqueue_args.html">EnqueueArgs</a>&amp; enqueueArgs,</div><div class="line"><a name="l09581"></a><span class="lineno"> 9581</span>&#160;            Ts... args)</div><div class="line"><a name="l09582"></a><span class="lineno"> 9582</span>&#160;        {</div><div class="line"><a name="l09583"></a><span class="lineno"> 9583</span>&#160;            <span class="keywordflow">return</span> functor_(</div><div class="line"><a name="l09584"></a><span class="lineno"> 9584</span>&#160;                enqueueArgs, args...);</div><div class="line"><a name="l09585"></a><span class="lineno"> 9585</span>&#160;        }</div><div class="line"><a name="l09586"></a><span class="lineno"> 9586</span>&#160;    };</div><div class="line"><a name="l09587"></a><span class="lineno"> 9587</span>&#160;} <span class="comment">// namespace compatibility</span></div><div class="line"><a name="l09588"></a><span class="lineno"> 9588</span>&#160;</div><div class="line"><a name="l09589"></a><span class="lineno"> 9589</span>&#160;</div><div class="line"><a name="l09590"></a><span class="lineno"> 9590</span>&#160;<span class="comment">//----------------------------------------------------------------------------------------------------------------------</span></div><div class="line"><a name="l09591"></a><span class="lineno"> 9591</span>&#160;</div><div class="line"><a name="l09592"></a><span class="lineno"> 9592</span>&#160;<span class="preprocessor">#undef CL_HPP_ERR_STR_</span></div><div class="line"><a name="l09593"></a><span class="lineno"> 9593</span>&#160;<span class="preprocessor">#if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS)</span></div><div class="line"><a name="l09594"></a><span class="lineno"> 9594</span>&#160;<span class="preprocessor">#undef __GET_DEVICE_INFO_ERR</span></div><div class="line"><a name="l09595"></a><span class="lineno"> 9595</span>&#160;<span class="preprocessor">#undef __GET_PLATFORM_INFO_ERR</span></div><div class="line"><a name="l09596"></a><span class="lineno"> 9596</span>&#160;<span class="preprocessor">#undef __GET_DEVICE_IDS_ERR</span></div><div class="line"><a name="l09597"></a><span class="lineno"> 9597</span>&#160;<span class="preprocessor">#undef __GET_CONTEXT_INFO_ERR</span></div><div class="line"><a name="l09598"></a><span class="lineno"> 9598</span>&#160;<span class="preprocessor">#undef __GET_EVENT_INFO_ERR</span></div><div class="line"><a name="l09599"></a><span class="lineno"> 9599</span>&#160;<span class="preprocessor">#undef __GET_EVENT_PROFILE_INFO_ERR</span></div><div class="line"><a name="l09600"></a><span class="lineno"> 9600</span>&#160;<span class="preprocessor">#undef __GET_MEM_OBJECT_INFO_ERR</span></div><div class="line"><a name="l09601"></a><span class="lineno"> 9601</span>&#160;<span class="preprocessor">#undef __GET_IMAGE_INFO_ERR</span></div><div class="line"><a name="l09602"></a><span class="lineno"> 9602</span>&#160;<span class="preprocessor">#undef __GET_SAMPLER_INFO_ERR</span></div><div class="line"><a name="l09603"></a><span class="lineno"> 9603</span>&#160;<span class="preprocessor">#undef __GET_KERNEL_INFO_ERR</span></div><div class="line"><a name="l09604"></a><span class="lineno"> 9604</span>&#160;<span class="preprocessor">#undef __GET_KERNEL_ARG_INFO_ERR</span></div><div class="line"><a name="l09605"></a><span class="lineno"> 9605</span>&#160;<span class="preprocessor">#undef __GET_KERNEL_WORK_GROUP_INFO_ERR</span></div><div class="line"><a name="l09606"></a><span class="lineno"> 9606</span>&#160;<span class="preprocessor">#undef __GET_PROGRAM_INFO_ERR</span></div><div class="line"><a name="l09607"></a><span class="lineno"> 9607</span>&#160;<span class="preprocessor">#undef __GET_PROGRAM_BUILD_INFO_ERR</span></div><div class="line"><a name="l09608"></a><span class="lineno"> 9608</span>&#160;<span class="preprocessor">#undef __GET_COMMAND_QUEUE_INFO_ERR</span></div><div class="line"><a name="l09609"></a><span class="lineno"> 9609</span>&#160;</div><div class="line"><a name="l09610"></a><span class="lineno"> 9610</span>&#160;<span class="preprocessor">#undef __CREATE_CONTEXT_ERR</span></div><div class="line"><a name="l09611"></a><span class="lineno"> 9611</span>&#160;<span class="preprocessor">#undef __CREATE_CONTEXT_FROM_TYPE_ERR</span></div><div class="line"><a name="l09612"></a><span class="lineno"> 9612</span>&#160;<span class="preprocessor">#undef __GET_SUPPORTED_IMAGE_FORMATS_ERR</span></div><div class="line"><a name="l09613"></a><span class="lineno"> 9613</span>&#160;</div><div class="line"><a name="l09614"></a><span class="lineno"> 9614</span>&#160;<span class="preprocessor">#undef __CREATE_BUFFER_ERR</span></div><div class="line"><a name="l09615"></a><span class="lineno"> 9615</span>&#160;<span class="preprocessor">#undef __CREATE_SUBBUFFER_ERR</span></div><div class="line"><a name="l09616"></a><span class="lineno"> 9616</span>&#160;<span class="preprocessor">#undef __CREATE_IMAGE2D_ERR</span></div><div class="line"><a name="l09617"></a><span class="lineno"> 9617</span>&#160;<span class="preprocessor">#undef __CREATE_IMAGE3D_ERR</span></div><div class="line"><a name="l09618"></a><span class="lineno"> 9618</span>&#160;<span class="preprocessor">#undef __CREATE_SAMPLER_ERR</span></div><div class="line"><a name="l09619"></a><span class="lineno"> 9619</span>&#160;<span class="preprocessor">#undef __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR</span></div><div class="line"><a name="l09620"></a><span class="lineno"> 9620</span>&#160;</div><div class="line"><a name="l09621"></a><span class="lineno"> 9621</span>&#160;<span class="preprocessor">#undef __CREATE_USER_EVENT_ERR</span></div><div class="line"><a name="l09622"></a><span class="lineno"> 9622</span>&#160;<span class="preprocessor">#undef __SET_USER_EVENT_STATUS_ERR</span></div><div class="line"><a name="l09623"></a><span class="lineno"> 9623</span>&#160;<span class="preprocessor">#undef __SET_EVENT_CALLBACK_ERR</span></div><div class="line"><a name="l09624"></a><span class="lineno"> 9624</span>&#160;<span class="preprocessor">#undef __SET_PRINTF_CALLBACK_ERR</span></div><div class="line"><a name="l09625"></a><span class="lineno"> 9625</span>&#160;</div><div class="line"><a name="l09626"></a><span class="lineno"> 9626</span>&#160;<span class="preprocessor">#undef __WAIT_FOR_EVENTS_ERR</span></div><div class="line"><a name="l09627"></a><span class="lineno"> 9627</span>&#160;</div><div class="line"><a name="l09628"></a><span class="lineno"> 9628</span>&#160;<span class="preprocessor">#undef __CREATE_KERNEL_ERR</span></div><div class="line"><a name="l09629"></a><span class="lineno"> 9629</span>&#160;<span class="preprocessor">#undef __SET_KERNEL_ARGS_ERR</span></div><div class="line"><a name="l09630"></a><span class="lineno"> 9630</span>&#160;<span class="preprocessor">#undef __CREATE_PROGRAM_WITH_SOURCE_ERR</span></div><div class="line"><a name="l09631"></a><span class="lineno"> 9631</span>&#160;<span class="preprocessor">#undef __CREATE_PROGRAM_WITH_BINARY_ERR</span></div><div class="line"><a name="l09632"></a><span class="lineno"> 9632</span>&#160;<span class="preprocessor">#undef __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR</span></div><div class="line"><a name="l09633"></a><span class="lineno"> 9633</span>&#160;<span class="preprocessor">#undef __BUILD_PROGRAM_ERR</span></div><div class="line"><a name="l09634"></a><span class="lineno"> 9634</span>&#160;<span class="preprocessor">#undef __CREATE_KERNELS_IN_PROGRAM_ERR</span></div><div class="line"><a name="l09635"></a><span class="lineno"> 9635</span>&#160;</div><div class="line"><a name="l09636"></a><span class="lineno"> 9636</span>&#160;<span class="preprocessor">#undef __CREATE_COMMAND_QUEUE_ERR</span></div><div class="line"><a name="l09637"></a><span class="lineno"> 9637</span>&#160;<span class="preprocessor">#undef __SET_COMMAND_QUEUE_PROPERTY_ERR</span></div><div class="line"><a name="l09638"></a><span class="lineno"> 9638</span>&#160;<span class="preprocessor">#undef __ENQUEUE_READ_BUFFER_ERR</span></div><div class="line"><a name="l09639"></a><span class="lineno"> 9639</span>&#160;<span class="preprocessor">#undef __ENQUEUE_WRITE_BUFFER_ERR</span></div><div class="line"><a name="l09640"></a><span class="lineno"> 9640</span>&#160;<span class="preprocessor">#undef __ENQUEUE_READ_BUFFER_RECT_ERR</span></div><div class="line"><a name="l09641"></a><span class="lineno"> 9641</span>&#160;<span class="preprocessor">#undef __ENQUEUE_WRITE_BUFFER_RECT_ERR</span></div><div class="line"><a name="l09642"></a><span class="lineno"> 9642</span>&#160;<span class="preprocessor">#undef __ENQEUE_COPY_BUFFER_ERR</span></div><div class="line"><a name="l09643"></a><span class="lineno"> 9643</span>&#160;<span class="preprocessor">#undef __ENQEUE_COPY_BUFFER_RECT_ERR</span></div><div class="line"><a name="l09644"></a><span class="lineno"> 9644</span>&#160;<span class="preprocessor">#undef __ENQUEUE_READ_IMAGE_ERR</span></div><div class="line"><a name="l09645"></a><span class="lineno"> 9645</span>&#160;<span class="preprocessor">#undef __ENQUEUE_WRITE_IMAGE_ERR</span></div><div class="line"><a name="l09646"></a><span class="lineno"> 9646</span>&#160;<span class="preprocessor">#undef __ENQUEUE_COPY_IMAGE_ERR</span></div><div class="line"><a name="l09647"></a><span class="lineno"> 9647</span>&#160;<span class="preprocessor">#undef __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR</span></div><div class="line"><a name="l09648"></a><span class="lineno"> 9648</span>&#160;<span class="preprocessor">#undef __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR</span></div><div class="line"><a name="l09649"></a><span class="lineno"> 9649</span>&#160;<span class="preprocessor">#undef __ENQUEUE_MAP_BUFFER_ERR</span></div><div class="line"><a name="l09650"></a><span class="lineno"> 9650</span>&#160;<span class="preprocessor">#undef __ENQUEUE_MAP_IMAGE_ERR</span></div><div class="line"><a name="l09651"></a><span class="lineno"> 9651</span>&#160;<span class="preprocessor">#undef __ENQUEUE_UNMAP_MEM_OBJECT_ERR</span></div><div class="line"><a name="l09652"></a><span class="lineno"> 9652</span>&#160;<span class="preprocessor">#undef __ENQUEUE_NDRANGE_KERNEL_ERR</span></div><div class="line"><a name="l09653"></a><span class="lineno"> 9653</span>&#160;<span class="preprocessor">#undef __ENQUEUE_TASK_ERR</span></div><div class="line"><a name="l09654"></a><span class="lineno"> 9654</span>&#160;<span class="preprocessor">#undef __ENQUEUE_NATIVE_KERNEL</span></div><div class="line"><a name="l09655"></a><span class="lineno"> 9655</span>&#160;</div><div class="line"><a name="l09656"></a><span class="lineno"> 9656</span>&#160;<span class="preprocessor">#undef __UNLOAD_COMPILER_ERR</span></div><div class="line"><a name="l09657"></a><span class="lineno"> 9657</span>&#160;<span class="preprocessor">#undef __CREATE_SUB_DEVICES_ERR</span></div><div class="line"><a name="l09658"></a><span class="lineno"> 9658</span>&#160;</div><div class="line"><a name="l09659"></a><span class="lineno"> 9659</span>&#160;<span class="preprocessor">#undef __CREATE_PIPE_ERR</span></div><div class="line"><a name="l09660"></a><span class="lineno"> 9660</span>&#160;<span class="preprocessor">#undef __GET_PIPE_INFO_ERR</span></div><div class="line"><a name="l09661"></a><span class="lineno"> 9661</span>&#160;</div><div class="line"><a name="l09662"></a><span class="lineno"> 9662</span>&#160;<span class="preprocessor">#endif //CL_HPP_USER_OVERRIDE_ERROR_STRINGS</span></div><div class="line"><a name="l09663"></a><span class="lineno"> 9663</span>&#160;</div><div class="line"><a name="l09664"></a><span class="lineno"> 9664</span>&#160;<span class="comment">// Extensions</span></div><div class="line"><a name="l09665"></a><span class="lineno"> 9665</span>&#160;<span class="preprocessor">#undef CL_HPP_INIT_CL_EXT_FCN_PTR_</span></div><div class="line"><a name="l09666"></a><span class="lineno"> 9666</span>&#160;<span class="preprocessor">#undef CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_</span></div><div class="line"><a name="l09667"></a><span class="lineno"> 9667</span>&#160;</div><div class="line"><a name="l09668"></a><span class="lineno"> 9668</span>&#160;<span class="preprocessor">#if defined(CL_HPP_USE_CL_DEVICE_FISSION)</span></div><div class="line"><a name="l09669"></a><span class="lineno"> 9669</span>&#160;<span class="preprocessor">#undef CL_HPP_PARAM_NAME_DEVICE_FISSION_</span></div><div class="line"><a name="l09670"></a><span class="lineno"> 9670</span>&#160;<span class="preprocessor">#endif // CL_HPP_USE_CL_DEVICE_FISSION</span></div><div class="line"><a name="l09671"></a><span class="lineno"> 9671</span>&#160;</div><div class="line"><a name="l09672"></a><span class="lineno"> 9672</span>&#160;<span class="preprocessor">#undef CL_HPP_NOEXCEPT_</span></div><div class="line"><a name="l09673"></a><span class="lineno"> 9673</span>&#160;<span class="preprocessor">#undef CL_HPP_DEFINE_STATIC_MEMBER_</span></div><div class="line"><a name="l09674"></a><span class="lineno"> 9674</span>&#160;</div><div class="line"><a name="l09675"></a><span class="lineno"> 9675</span>&#160;} <span class="comment">// namespace cl</span></div><div class="line"><a name="l09676"></a><span class="lineno"> 9676</span>&#160;</div><div class="line"><a name="l09677"></a><span class="lineno"> 9677</span>&#160;<span class="preprocessor">#endif // CL_HPP_</span></div><div class="ttc" id="classcl_1_1_memory_html_a9926612772ae6e016f1118ef4148da22"><div class="ttname"><a href="classcl_1_1_memory.html#a9926612772ae6e016f1118ef4148da22">cl::Memory::Memory</a></div><div class="ttdeci">Memory()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03165">cl2.hpp:3165</a></div></div>
<div class="ttc" id="structcl_1_1compatibility_1_1make__kernel_html_aaa094f5455d73fae53eb99b374f05eec"><div class="ttname"><a href="structcl_1_1compatibility_1_1make__kernel.html#aaa094f5455d73fae53eb99b374f05eec">cl::compatibility::make_kernel::type_</a></div><div class="ttdeci">Event type_(const EnqueueArgs &amp;, Ts...)</div><div class="ttdoc">Function signature of kernel functor with no event dependency. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l09575">cl2.hpp:9575</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_render_g_l_html_a3214caef962ed7c7ff20e102f498eff6"><div class="ttname"><a href="classcl_1_1_buffer_render_g_l.html#a3214caef962ed7c7ff20e102f498eff6">cl::BufferRenderGL::BufferRenderGL</a></div><div class="ttdeci">BufferRenderGL(const cl_mem &amp;buffer, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04105">cl2.hpp:4105</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a1c5830678be567e34dccbb0065c89b21"><div class="ttname"><a href="classcl_1_1_command_queue.html#a1c5830678be567e34dccbb0065c89b21">cl::CommandQueue::CommandQueue</a></div><div class="ttdeci">CommandQueue(CommandQueue &amp;&amp;queue) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07104">cl2.hpp:7104</a></div></div>
<div class="ttc" id="classcl_1_1_s_v_m_trait_coarse_html"><div class="ttname"><a href="classcl_1_1_s_v_m_trait_coarse.html">cl::SVMTraitCoarse</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03332">cl2.hpp:3332</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_array_html"><div class="ttname"><a href="classcl_1_1_image2_d_array.html">cl::Image2DArray</a></div><div class="ttdoc">Image interface for arrays of 2D images. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04855">cl2.hpp:4855</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_buffer_html_a6b83eb1ccf0e1f88718a6f55c7340088"><div class="ttname"><a href="classcl_1_1_image1_d_buffer.html#a6b83eb1ccf0e1f88718a6f55c7340088">cl::Image1DBuffer::Image1DBuffer</a></div><div class="ttdeci">Image1DBuffer(const cl_mem &amp;image1D, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04384">cl2.hpp:4384</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_array_html"><div class="ttname"><a href="classcl_1_1_image1_d_array.html">cl::Image1DArray</a></div><div class="ttdoc">Image interface for arrays of 1D images. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04426">cl2.hpp:4426</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_g_l_html_a0232c815761105f1c87e833a193b5bcc"><div class="ttname"><a href="classcl_1_1_image2_d_g_l.html#a0232c815761105f1c87e833a193b5bcc">cl::Image2DGL::Image2DGL</a></div><div class="ttdeci">Image2DGL()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04798">cl2.hpp:4798</a></div></div>
<div class="ttc" id="classcl_1_1_context_html_a979d15f9228089af2a657a523b1186e8"><div class="ttname"><a href="classcl_1_1_context.html#a979d15f9228089af2a657a523b1186e8">cl::Context::getInfo</a></div><div class="ttdeci">cl_int getInfo(cl_context_info name, T *param) const</div><div class="ttdoc">Wrapper for clGetContextInfo(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02866">cl2.hpp:2866</a></div></div>
<div class="ttc" id="structcl_1_1_image_format_html"><div class="ttname"><a href="structcl_1_1_image_format.html">cl::ImageFormat</a></div><div class="ttdoc">Adds constructors and member functions for cl_image_format. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01929">cl2.hpp:1929</a></div></div>
<div class="ttc" id="classcl_1_1_context_html_a3fc0fba33d5b467b5d2ee70adb5b1e92"><div class="ttname"><a href="classcl_1_1_context.html#a3fc0fba33d5b467b5d2ee70adb5b1e92">cl::Context::Context</a></div><div class="ttdeci">Context(const cl_context &amp;context, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_context - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02850">cl2.hpp:2850</a></div></div>
<div class="ttc" id="classcl_1_1_image_html_af9fda827ebfbbe8b92a5cefc5225cd69"><div class="ttname"><a href="classcl_1_1_image.html#af9fda827ebfbbe8b92a5cefc5225cd69">cl::Image::operator=</a></div><div class="ttdeci">Image &amp; operator=(const cl_mem &amp;rhs)</div><div class="ttdoc">Assignment from cl_mem - performs shallow copy. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04183">cl2.hpp:4183</a></div></div>
<div class="ttc" id="structcl_1_1_s_v_m_allocator_1_1rebind_html"><div class="ttname"><a href="structcl_1_1_s_v_m_allocator_1_1rebind.html">cl::SVMAllocator::rebind</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03401">cl2.hpp:3401</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_html_afbb7d12774e435bc5cb33c13520a2764"><div class="ttname"><a href="classcl_1_1_image3_d.html#afbb7d12774e435bc5cb33c13520a2764">cl::Image3D::Image3D</a></div><div class="ttdeci">Image3D(const Image3D &amp;img)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05052">cl2.hpp:5052</a></div></div>
<div class="ttc" id="classcl_1_1_device_command_queue_html_a74abbdd1ba59525634baa4334ae70215"><div class="ttname"><a href="classcl_1_1_device_command_queue.html#a74abbdd1ba59525634baa4334ae70215">cl::DeviceCommandQueue::makeDefault</a></div><div class="ttdeci">static DeviceCommandQueue makeDefault(const Context &amp;context, const Device &amp;device, cl_uint queueSize, cl_int *err=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08460">cl2.hpp:8460</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_g_l_html_a064cb003d315b22e6c2f719054bbf7c3"><div class="ttname"><a href="classcl_1_1_image2_d_g_l.html#a064cb003d315b22e6c2f719054bbf7c3">cl::Image2DGL::Image2DGL</a></div><div class="ttdeci">Image2DGL(const Image2DGL &amp;img)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04823">cl2.hpp:4823</a></div></div>
<div class="ttc" id="classcl_1_1_s_v_m_trait_fine_html"><div class="ttname"><a href="classcl_1_1_s_v_m_trait_fine.html">cl::SVMTraitFine</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03342">cl2.hpp:3342</a></div></div>
<div class="ttc" id="structcl_1_1detail_1_1_get_info_functor0_html"><div class="ttname"><a href="structcl_1_1detail_1_1_get_info_functor0.html">cl::detail::GetInfoFunctor0</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01424">cl2.hpp:1424</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html_a69cdd780a6b77e3b15c7436c5ab665a3"><div class="ttname"><a href="classcl_1_1_kernel.html#a69cdd780a6b77e3b15c7436c5ab665a3">cl::Kernel::setArg</a></div><div class="ttdeci">std::enable_if&lt; std::is_pointer&lt; T &gt;::value, cl_int &gt;::type setArg(cl_uint index, const T argPtr)</div><div class="ttdoc">setArg overload taking a pointer type </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05844">cl2.hpp:5844</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_buffer_html_a223b309adff248549715812239867c06"><div class="ttname"><a href="classcl_1_1_image1_d_buffer.html#a223b309adff248549715812239867c06">cl::Image1DBuffer::Image1DBuffer</a></div><div class="ttdeci">Image1DBuffer(const Image1DBuffer &amp;img)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04396">cl2.hpp:4396</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_html_a994fa7059e735359e28ba9a2e389e734"><div class="ttname"><a href="classcl_1_1_image2_d.html#a994fa7059e735359e28ba9a2e389e734">cl::Image2D::Image2D</a></div><div class="ttdeci">Image2D(const Context &amp;context, cl_mem_flags flags, ImageFormat format, size_type width, size_type height, size_type row_pitch=0, void *host_ptr=NULL, cl_int *err=NULL)</div><div class="ttdoc">Constructs a 2D Image in a specified context. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04527">cl2.hpp:4527</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_html_a9bf902e7607fdfd6dacf145cae2f31e9"><div class="ttname"><a href="classcl_1_1_image1_d.html#a9bf902e7607fdfd6dacf145cae2f31e9">cl::Image1D::Image1D</a></div><div class="ttdeci">Image1D(const Context &amp;context, cl_mem_flags flags, ImageFormat format, size_type width, void *host_ptr=NULL, cl_int *err=NULL)</div><div class="ttdoc">Constructs a 1D Image in a specified context. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04257">cl2.hpp:4257</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_html_ac92eb515aa0d087cc63145ef4cfb536b"><div class="ttname"><a href="classcl_1_1_image2_d.html#ac92eb515aa0d087cc63145ef4cfb536b">cl::Image2D::operator=</a></div><div class="ttdeci">Image2D &amp; operator=(const cl_mem &amp;rhs)</div><div class="ttdoc">Assignment from cl_mem - performs shallow copy. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04718">cl2.hpp:4718</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html_ada828235b52fc603d5b070544e93f469"><div class="ttname"><a href="classcl_1_1_kernel.html#ada828235b52fc603d5b070544e93f469">cl::Kernel::setSVMPointers</a></div><div class="ttdeci">cl_int setSVMPointers(const vector&lt; void *&gt; &amp;pointerList)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05879">cl2.hpp:5879</a></div></div>
<div class="ttc" id="namespacecl_html"><div class="ttname"><a href="namespacecl.html">cl</a></div><div class="ttdoc">The OpenCL C++ bindings are defined within this namespace. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l00555">cl2.hpp:555</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a93bd22a376266778c64437aab1401170"><div class="ttname"><a href="classcl_1_1_command_queue.html#a93bd22a376266778c64437aab1401170">cl::CommandQueue::enqueueBarrier</a></div><div class="ttdeci">CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08209">cl2.hpp:8209</a></div></div>
<div class="ttc" id="classcl_1_1_image_html_af47b59a0b6626ba0dd855f826f31ad9b"><div class="ttname"><a href="classcl_1_1_image.html#af47b59a0b6626ba0dd855f826f31ad9b">cl::Image::Image</a></div><div class="ttdeci">Image(Image &amp;&amp;img) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04206">cl2.hpp:4206</a></div></div>
<div class="ttc" id="classcl_1_1_device_html_a2b776c204cde7b4b53cde728ed5bf79b"><div class="ttname"><a href="classcl_1_1_device.html#a2b776c204cde7b4b53cde728ed5bf79b">cl::Device::getInfo</a></div><div class="ttdeci">detail::param_traits&lt; detail::cl_device_info, name &gt;::param_type getInfo(cl_int *err=NULL) const</div><div class="ttdoc">Wrapper for clGetDeviceInfo() that returns by value. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02084">cl2.hpp:2084</a></div></div>
<div class="ttc" id="namespacecl_html_af9f49b386b20c55c04a9e6cd21849fd5"><div class="ttname"><a href="namespacecl.html#af9f49b386b20c55c04a9e6cd21849fd5">cl::unmapSVM</a></div><div class="ttdeci">cl_int unmapSVM(cl::vector&lt; T, Alloc &gt; &amp;container)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08972">cl2.hpp:8972</a></div></div>
<div class="ttc" id="classcl_1_1_context_html_ae0a598440f95bc8457433a088cef17a1"><div class="ttname"><a href="classcl_1_1_context.html#ae0a598440f95bc8457433a088cef17a1">cl::Context::Context</a></div><div class="ttdeci">Context(const Context &amp;ctx)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02788">cl2.hpp:2788</a></div></div>
<div class="ttc" id="structcl_1_1_local_space_arg_html"><div class="ttname"><a href="structcl_1_1_local_space_arg.html">cl::LocalSpaceArg</a></div><div class="ttdoc">Local address wrapper for use with Kernel::setArg. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05610">cl2.hpp:5610</a></div></div>
<div class="ttc" id="classcl_1_1_pipe_html_ad929059a1bcc11a92894affcd15642e3"><div class="ttname"><a href="classcl_1_1_pipe.html#ad929059a1bcc11a92894affcd15642e3">cl::Pipe::getInfo</a></div><div class="ttdeci">detail::param_traits&lt; detail::cl_pipe_info, name &gt;::param_type getInfo(cl_int *err=NULL) const</div><div class="ttdoc">Wrapper for clGetMemObjectInfo() that returns by value. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05380">cl2.hpp:5380</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a30fcb95415b760f23b2abba6e0842125"><div class="ttname"><a href="classcl_1_1_command_queue.html#a30fcb95415b760f23b2abba6e0842125">cl::CommandQueue::enqueueMapSVM</a></div><div class="ttdeci">cl_int enqueueMapSVM(cl::vector&lt; T, Alloc &gt; &amp;container, cl_bool blocking, cl_map_flags flags, const vector&lt; Event &gt; *events=NULL, Event *event=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07748">cl2.hpp:7748</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_g_l_html"><div class="ttname"><a href="classcl_1_1_image3_d_g_l.html">cl::Image3DGL</a></div><div class="ttdoc">Class interface for GL 3D Image Memory objects. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05087">cl2.hpp:5087</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_af1e9e85e0b60c7c852d8a902df064263"><div class="ttname"><a href="classcl_1_1_command_queue.html#af1e9e85e0b60c7c852d8a902df064263">cl::CommandQueue::enqueueMarker</a></div><div class="ttdeci">CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int enqueueMarker(Event *event=NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08056">cl2.hpp:8056</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a8dd467bd94839921b7318cb30f92b5a4"><div class="ttname"><a href="classcl_1_1_command_queue.html#a8dd467bd94839921b7318cb30f92b5a4">cl::CommandQueue::CommandQueue</a></div><div class="ttdeci">CommandQueue(const Context &amp;context, const Device &amp;device, QueueProperties properties, cl_int *err=NULL)</div><div class="ttdoc">Constructs a CommandQueue for a passed device and context Will return an CL_INVALID_QUEUE_PROPERTIES ...</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06994">cl2.hpp:6994</a></div></div>
<div class="ttc" id="namespacecl_html_a72d46349148c0075ca64f97f92ba7dc0"><div class="ttname"><a href="namespacecl.html#a72d46349148c0075ca64f97f92ba7dc0">cl::UnloadCompiler</a></div><div class="ttdeci">CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02557">cl2.hpp:2557</a></div></div>
<div class="ttc" id="classcl_1_1_device_command_queue_html_a2188fe106a515329fd90ac58ee95e10e"><div class="ttname"><a href="classcl_1_1_device_command_queue.html#a2188fe106a515329fd90ac58ee95e10e">cl::DeviceCommandQueue::makeDefault</a></div><div class="ttdeci">static DeviceCommandQueue makeDefault(const Context &amp;context, const Device &amp;device, cl_int *err=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08432">cl2.hpp:8432</a></div></div>
<div class="ttc" id="classcl_1_1_platform_html_a73cf4b02df3beafae1a97a91ee3e9565"><div class="ttname"><a href="classcl_1_1_platform.html#a73cf4b02df3beafae1a97a91ee3e9565">cl::Platform::getDevices</a></div><div class="ttdeci">cl_int getDevices(cl_device_type type, vector&lt; Device &gt; *devices) const</div><div class="ttdoc">Gets a list of devices for this platform. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02338">cl2.hpp:2338</a></div></div>
<div class="ttc" id="classcl_1_1_program_html_af804a4cb0e2dc844c0be0b0b76dbd25a"><div class="ttname"><a href="classcl_1_1_program.html#af804a4cb0e2dc844c0be0b0b76dbd25a">cl::Program::Program</a></div><div class="ttdeci">Program(const Context &amp;context, const vector&lt; Device &gt; &amp;devices, const Binaries &amp;binaries, vector&lt; cl_int &gt; *binaryStatus=NULL, cl_int *err=NULL)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06152">cl2.hpp:6152</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_html_aadd3663801107fabb88238565c55ba16"><div class="ttname"><a href="classcl_1_1_buffer.html#aadd3663801107fabb88238565c55ba16">cl::Buffer::Buffer</a></div><div class="ttdeci">Buffer(IteratorType startIterator, IteratorType endIterator, bool readOnly, bool useHostPtr=false, cl_int *err=NULL)</div><div class="ttdoc">Construct a Buffer from a host container via iterators. IteratorType must be random access...</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03711">cl2.hpp:3711</a></div></div>
<div class="ttc" id="classcl_1_1_memory_html"><div class="ttname"><a href="classcl_1_1_memory.html">cl::Memory</a></div><div class="ttdoc">Class interface for cl_mem. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03161">cl2.hpp:3161</a></div></div>
<div class="ttc" id="classcl_1_1_pipe_html_a462eff8303e507a22bfa7ed2cc6ae3b3"><div class="ttname"><a href="classcl_1_1_pipe.html#a462eff8303e507a22bfa7ed2cc6ae3b3">cl::Pipe::Pipe</a></div><div class="ttdeci">Pipe(cl_uint packet_size, cl_uint max_packets, cl_int *err=NULL)</div><div class="ttdoc">Constructs a Pipe in a the default context. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05299">cl2.hpp:5299</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a3a9a4f084dc7634d3c73f5bf7f680b65"><div class="ttname"><a href="classcl_1_1_command_queue.html#a3a9a4f084dc7634d3c73f5bf7f680b65">cl::CommandQueue::enqueueMigrateMemObjects</a></div><div class="ttdeci">cl_int enqueueMigrateMemObjects(const vector&lt; Memory &gt; &amp;memObjects, cl_mem_migration_flags flags, const vector&lt; Event &gt; *events=NULL, Event *event=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07934">cl2.hpp:7934</a></div></div>
<div class="ttc" id="classcl_1_1_device_html_a8445328fa0af11c93f20615f820b93fc"><div class="ttname"><a href="classcl_1_1_device.html#a8445328fa0af11c93f20615f820b93fc">cl::Device::Device</a></div><div class="ttdeci">Device(const Device &amp;dev)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02047">cl2.hpp:2047</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_render_g_l_html_a387a6e721fd3283d288d86e9dbfda3a5"><div class="ttname"><a href="classcl_1_1_buffer_render_g_l.html#a387a6e721fd3283d288d86e9dbfda3a5">cl::BufferRenderGL::BufferRenderGL</a></div><div class="ttdeci">BufferRenderGL(BufferRenderGL &amp;&amp;buf) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04135">cl2.hpp:4135</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_array_html_aad8b0d3671dd537ffa8850f50c0cfbd9"><div class="ttname"><a href="classcl_1_1_image2_d_array.html#aad8b0d3671dd537ffa8850f50c0cfbd9">cl::Image2DArray::Image2DArray</a></div><div class="ttdeci">Image2DArray(Image2DArray &amp;&amp;img) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04930">cl2.hpp:4930</a></div></div>
<div class="ttc" id="classcl_1_1_image_html_a6c19e6b799c523fe5229a7a8f3da7431"><div class="ttname"><a href="classcl_1_1_image.html#a6c19e6b799c523fe5229a7a8f3da7431">cl::Image::getImageInfo</a></div><div class="ttdeci">detail::param_traits&lt; detail::cl_image_info, name &gt;::param_type getImageInfo(cl_int *err=NULL) const</div><div class="ttdoc">Wrapper for clGetImageInfo() that returns by value. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04231">cl2.hpp:4231</a></div></div>
<div class="ttc" id="classcl_1_1_memory_html_a48a3ca6b8b6c4dbdcd6cc8e75d6503e6"><div class="ttname"><a href="classcl_1_1_memory.html#a48a3ca6b8b6c4dbdcd6cc8e75d6503e6">cl::Memory::Memory</a></div><div class="ttdeci">Memory(Memory &amp;&amp;mem) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03209">cl2.hpp:3209</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a76a3f83c5546fbfa71a38f4ea02e264d"><div class="ttname"><a href="classcl_1_1_command_queue.html#a76a3f83c5546fbfa71a38f4ea02e264d">cl::CommandQueue::enqueueMarkerWithWaitList</a></div><div class="ttdeci">cl_int enqueueMarkerWithWaitList(const vector&lt; Event &gt; *events=0, Event *event=0) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07881">cl2.hpp:7881</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_html_ae07b7a7f4004a6e78ece40957a6f5899"><div class="ttname"><a href="classcl_1_1_image3_d.html#ae07b7a7f4004a6e78ece40957a6f5899">cl::Image3D::Image3D</a></div><div class="ttdeci">Image3D(Image3D &amp;&amp;img) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05066">cl2.hpp:5066</a></div></div>
<div class="ttc" id="classcl_1_1_context_html_a5f00a3ede6edd143bbb2954306290199"><div class="ttname"><a href="classcl_1_1_context.html#a5f00a3ede6edd143bbb2954306290199">cl::Context::getSupportedImageFormats</a></div><div class="ttdeci">cl_int getSupportedImageFormats(cl_mem_flags flags, cl_mem_object_type type, vector&lt; ImageFormat &gt; *formats) const</div><div class="ttdoc">Gets a list of supported image formats. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02891">cl2.hpp:2891</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_render_g_l_html_a9ae513ba0c6664353c389764c7e1011d"><div class="ttname"><a href="classcl_1_1_buffer_render_g_l.html#a9ae513ba0c6664353c389764c7e1011d">cl::BufferRenderGL::BufferRenderGL</a></div><div class="ttdeci">BufferRenderGL()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04096">cl2.hpp:4096</a></div></div>
<div class="ttc" id="classcl_1_1_image_html_a263dda8ec8a4a43e98a2dadde1b2ea31"><div class="ttname"><a href="classcl_1_1_image.html#a263dda8ec8a4a43e98a2dadde1b2ea31">cl::Image::Image</a></div><div class="ttdeci">Image(const Image &amp;img)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04192">cl2.hpp:4192</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a09f546d77b717ce26606c462c0ca9d1c"><div class="ttname"><a href="classcl_1_1_command_queue.html#a09f546d77b717ce26606c462c0ca9d1c">cl::CommandQueue::enqueueFillBuffer</a></div><div class="ttdeci">cl_int enqueueFillBuffer(const Buffer &amp;buffer, PatternType pattern, size_type offset, size_type size, const vector&lt; Event &gt; *events=NULL, Event *event=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07339">cl2.hpp:7339</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_array_html_a36f96dc737c5e69505b6c1b4c3b6e10b"><div class="ttname"><a href="classcl_1_1_image1_d_array.html#a36f96dc737c5e69505b6c1b4c3b6e10b">cl::Image1DArray::Image1DArray</a></div><div class="ttdeci">Image1DArray(const Image1DArray &amp;img)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04485">cl2.hpp:4485</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html_a93b516f37993297101dd9d30a4572b23"><div class="ttname"><a href="classcl_1_1_kernel.html#a93b516f37993297101dd9d30a4572b23">cl::Kernel::Kernel</a></div><div class="ttdeci">Kernel(const Kernel &amp;kernel)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05701">cl2.hpp:5701</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_adcb116a4e1a53417dad3d3850c33d42f"><div class="ttname"><a href="classcl_1_1_command_queue.html#adcb116a4e1a53417dad3d3850c33d42f">cl::CommandQueue::CommandQueue</a></div><div class="ttdeci">CommandQueue(const Context &amp;context, cl_command_queue_properties properties=0, cl_int *err=NULL)</div><div class="ttdoc">Constructs a CommandQueue for an implementation defined device in the given context Will return an CL...</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06814">cl2.hpp:6814</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_html_ab73f1e0ab2224f3d515820dd6b0c1d73"><div class="ttname"><a href="classcl_1_1_buffer.html#ab73f1e0ab2224f3d515820dd6b0c1d73">cl::Buffer::createSubBuffer</a></div><div class="ttdeci">Buffer createSubBuffer(cl_mem_flags flags, cl_buffer_create_type buffer_create_type, const void *buffer_create_info, cl_int *err=NULL)</div><div class="ttdoc">Creates a new buffer object from this. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03829">cl2.hpp:3829</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_acf92038ba0d015824a7488091fc8f5a1"><div class="ttname"><a href="classcl_1_1_command_queue.html#acf92038ba0d015824a7488091fc8f5a1">cl::CommandQueue::enqueueBarrierWithWaitList</a></div><div class="ttdeci">cl_int enqueueBarrierWithWaitList(const vector&lt; Event &gt; *events=0, Event *event=0) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07911">cl2.hpp:7911</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_html_a5ee4055b862daa313919ef577600b9fa"><div class="ttname"><a href="classcl_1_1_buffer.html#a5ee4055b862daa313919ef577600b9fa">cl::Buffer::Buffer</a></div><div class="ttdeci">Buffer(Buffer &amp;&amp;buf) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03813">cl2.hpp:3813</a></div></div>
<div class="ttc" id="namespacecl_html_abd957be3ad58ee2932a99ed8bc6cc049"><div class="ttname"><a href="namespacecl.html#abd957be3ad58ee2932a99ed8bc6cc049">cl::coarse_svm_vector</a></div><div class="ttdeci">vector&lt; T, cl::SVMAllocator&lt; int, cl::SVMTraitCoarse&lt;&gt; &gt;&gt; coarse_svm_vector</div><div class="ttdoc">Vector alias to simplify contruction of coarse-grained SVM containers. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03628">cl2.hpp:3628</a></div></div>
<div class="ttc" id="classcl_1_1_device_html_a7428cf3cdccc824c414730ed65e40a0d"><div class="ttname"><a href="classcl_1_1_device.html#a7428cf3cdccc824c414730ed65e40a0d">cl::Device::getDefault</a></div><div class="ttdeci">static Device getDefault(cl_int *errResult=NULL)</div><div class="ttdoc">Returns the first device on the default context. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02009">cl2.hpp:2009</a></div></div>
<div class="ttc" id="namespacecl_html_a45d896e5d437b505648b399dbe1c3cac"><div class="ttname"><a href="namespacecl.html#a45d896e5d437b505648b399dbe1c3cac">cl::enqueueUnmapSVM</a></div><div class="ttdeci">cl_int enqueueUnmapSVM(T *ptr, const vector&lt; Event &gt; *events=NULL, Event *event=NULL)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08776">cl2.hpp:8776</a></div></div>
<div class="ttc" id="classcl_1_1_sampler_html_a684ea0f7bb85233239ba3a266795c1a4"><div class="ttname"><a href="classcl_1_1_sampler.html#a684ea0f7bb85233239ba3a266795c1a4">cl::Sampler::Sampler</a></div><div class="ttdeci">Sampler(const Sampler &amp;sam)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05476">cl2.hpp:5476</a></div></div>
<div class="ttc" id="classcl_1_1_event_html_a4730c3b113e65efcf88aea0c9da13f52"><div class="ttname"><a href="classcl_1_1_event.html#a4730c3b113e65efcf88aea0c9da13f52">cl::Event::setCallback</a></div><div class="ttdeci">cl_int setCallback(cl_int type, void(CL_CALLBACK *pfn_notify)(cl_event, cl_int, void *), void *user_data=NULL)</div><div class="ttdoc">Registers a user callback function for a specific command execution status. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03068">cl2.hpp:3068</a></div></div>
<div class="ttc" id="classcl_1_1_n_d_range_html_a5684b0c2c648557ef31e6b212e8c4939"><div class="ttname"><a href="classcl_1_1_n_d_range.html#a5684b0c2c648557ef31e6b212e8c4939">cl::NDRange::dimensions</a></div><div class="ttdeci">size_type dimensions() const</div><div class="ttdoc">Queries the number of dimensions in the range. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05583">cl2.hpp:5583</a></div></div>
<div class="ttc" id="classcl_1_1_event_html_a90e01689f7b394fc003d66c48a7f6f95"><div class="ttname"><a href="classcl_1_1_event.html#a90e01689f7b394fc003d66c48a7f6f95">cl::Event::Event</a></div><div class="ttdeci">Event()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02982">cl2.hpp:2982</a></div></div>
<div class="ttc" id="classcl_1_1_image_g_l_html_afc06fdce130a034e8dca89ac910a93ab"><div class="ttname"><a href="classcl_1_1_image_g_l.html#afc06fdce130a034e8dca89ac910a93ab">cl::ImageGL::ImageGL</a></div><div class="ttdeci">ImageGL(const cl_mem &amp;image, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05213">cl2.hpp:5213</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_html_acf4e89070870a37289296e1716322c7f"><div class="ttname"><a href="classcl_1_1_image3_d.html#acf4e89070870a37289296e1716322c7f">cl::Image3D::Image3D</a></div><div class="ttdeci">Image3D(const Context &amp;context, cl_mem_flags flags, ImageFormat format, size_type width, size_type height, size_type depth, size_type row_pitch=0, size_type slice_pitch=0, void *host_ptr=NULL, cl_int *err=NULL)</div><div class="ttdoc">Constructs a 3D Image in a specified context. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04956">cl2.hpp:4956</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html_a9516e70e10909526dfb01f6cfe8b61bd"><div class="ttname"><a href="classcl_1_1_kernel.html#a9516e70e10909526dfb01f6cfe8b61bd">cl::Kernel::setArg</a></div><div class="ttdeci">cl_int setArg(cl_uint index, const cl::vector&lt; T, Alloc &gt; &amp;argPtr)</div><div class="ttdoc">setArg overload taking a vector type. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05833">cl2.hpp:5833</a></div></div>
<div class="ttc" id="classcl_1_1_event_html_ab76c11fecb0af5a0972903ee0f644193"><div class="ttname"><a href="classcl_1_1_event.html#ab76c11fecb0af5a0972903ee0f644193">cl::Event::getProfilingInfo</a></div><div class="ttdeci">detail::param_traits&lt; detail::cl_profiling_info, name &gt;::param_type getProfilingInfo(cl_int *err=NULL) const</div><div class="ttdoc">Wrapper for clGetEventProfilingInfo() that returns by value. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03041">cl2.hpp:3041</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_html_a818cbf2c71af2948f199cc4ab5d39de5"><div class="ttname"><a href="classcl_1_1_image1_d.html#a818cbf2c71af2948f199cc4ab5d39de5">cl::Image1D::Image1D</a></div><div class="ttdeci">Image1D(const Image1D &amp;img)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04312">cl2.hpp:4312</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_render_g_l_html_a9bbd05ded89c1c3d3c4fd52f0f5922b3"><div class="ttname"><a href="classcl_1_1_buffer_render_g_l.html#a9bbd05ded89c1c3d3c4fd52f0f5922b3">cl::BufferRenderGL::BufferRenderGL</a></div><div class="ttdeci">BufferRenderGL(const BufferRenderGL &amp;buf)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04121">cl2.hpp:4121</a></div></div>
<div class="ttc" id="classcl_1_1_device_command_queue_html_a796862188d423d2cfd1e90c4fafc5d5f"><div class="ttname"><a href="classcl_1_1_device_command_queue.html#a796862188d423d2cfd1e90c4fafc5d5f">cl::DeviceCommandQueue::DeviceCommandQueue</a></div><div class="ttdeci">DeviceCommandQueue(DeviceQueueProperties properties, cl_int *err=NULL)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08260">cl2.hpp:8260</a></div></div>
<div class="ttc" id="classcl_1_1_pipe_html_a18570ac9927752da9c1678d0d27dd606"><div class="ttname"><a href="classcl_1_1_pipe.html#a18570ac9927752da9c1678d0d27dd606">cl::Pipe::Pipe</a></div><div class="ttdeci">Pipe(const Context &amp;context, cl_uint packet_size, cl_uint max_packets, cl_int *err=NULL)</div><div class="ttdoc">Constructs a Pipe in a specified context. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05274">cl2.hpp:5274</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_html_a9243ebeec223f4c6b9681e58b8844214"><div class="ttname"><a href="classcl_1_1_image3_d.html#a9243ebeec223f4c6b9681e58b8844214">cl::Image3D::Image3D</a></div><div class="ttdeci">Image3D()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05027">cl2.hpp:5027</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a887826e515b03224aec87b33ac59f327"><div class="ttname"><a href="classcl_1_1_command_queue.html#a887826e515b03224aec87b33ac59f327">cl::CommandQueue::CommandQueue</a></div><div class="ttdeci">CommandQueue(const Context &amp;context, const Device &amp;device, cl_command_queue_properties properties=0, cl_int *err=NULL)</div><div class="ttdoc">Constructs a CommandQueue for a passed device and context Will return an CL_INVALID_QUEUE_PROPERTIES ...</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06943">cl2.hpp:6943</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_g_l_html_a7b38f17115b6098a5d8d85a4f86e6dd1"><div class="ttname"><a href="classcl_1_1_image2_d_g_l.html#a7b38f17115b6098a5d8d85a4f86e6dd1">cl::Image2DGL::Image2DGL</a></div><div class="ttdeci">Image2DGL(Image2DGL &amp;&amp;img) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04837">cl2.hpp:4837</a></div></div>
<div class="ttc" id="classcl_1_1_sampler_html_a692268678bf12b7b754009f9ba291fbc"><div class="ttname"><a href="classcl_1_1_sampler.html#a692268678bf12b7b754009f9ba291fbc">cl::Sampler::getInfo</a></div><div class="ttdeci">cl_int getInfo(cl_sampler_info name, T *param) const</div><div class="ttdoc">Wrapper for clGetSamplerInfo(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05503">cl2.hpp:5503</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html_a69b2fc97f80d90a23927a74395d09ec9"><div class="ttname"><a href="classcl_1_1_kernel.html#a69b2fc97f80d90a23927a74395d09ec9">cl::Kernel::Kernel</a></div><div class="ttdeci">Kernel()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05674">cl2.hpp:5674</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_g_l_html_aff349860939f29111357f51fd3881917"><div class="ttname"><a href="classcl_1_1_image2_d_g_l.html#aff349860939f29111357f51fd3881917">cl::Image2DGL::Image2DGL</a></div><div class="ttdeci">Image2DGL(const Context &amp;context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texobj, cl_int *err=NULL)</div><div class="ttdoc">Constructs an Image2DGL in a specified context, from a given GL Texture. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04773">cl2.hpp:4773</a></div></div>
<div class="ttc" id="classcl_1_1_enqueue_args_html"><div class="ttname"><a href="classcl_1_1_enqueue_args.html">cl::EnqueueArgs</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l09251">cl2.hpp:9251</a></div></div>
<div class="ttc" id="classcl_1_1_sampler_html_a1c8395b386e3b1c09dc43f4134909390"><div class="ttname"><a href="classcl_1_1_sampler.html#a1c8395b386e3b1c09dc43f4134909390">cl::Sampler::Sampler</a></div><div class="ttdeci">Sampler()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05406">cl2.hpp:5406</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_html_ab74ea8b65b39b808cfdec016973d2770"><div class="ttname"><a href="classcl_1_1_image1_d.html#ab74ea8b65b39b808cfdec016973d2770">cl::Image1D::Image1D</a></div><div class="ttdeci">Image1D(Image1D &amp;&amp;img) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04326">cl2.hpp:4326</a></div></div>
<div class="ttc" id="classcl_1_1_program_html_a1666a02c393b46730b24a76f79302b15"><div class="ttname"><a href="classcl_1_1_program.html#a1666a02c393b46730b24a76f79302b15">cl::Program::Program</a></div><div class="ttdeci">Program(Program &amp;&amp;program) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06280">cl2.hpp:6280</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_render_g_l_html_a148deb18e39ee7553a96eb8e56557f5f"><div class="ttname"><a href="classcl_1_1_buffer_render_g_l.html#a148deb18e39ee7553a96eb8e56557f5f">cl::BufferRenderGL::getObjectInfo</a></div><div class="ttdeci">cl_int getObjectInfo(cl_gl_object_type *type, cl_GLuint *gl_object_name)</div><div class="ttdoc">Wrapper for clGetGLObjectInfo(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04147">cl2.hpp:4147</a></div></div>
<div class="ttc" id="classcl_1_1_platform_html_a70313ea76e0e369c4dc951a7f47b531f"><div class="ttname"><a href="classcl_1_1_platform.html#a70313ea76e0e369c4dc951a7f47b531f">cl::Platform::unloadCompiler</a></div><div class="ttdeci">cl_int unloadCompiler()</div><div class="ttdoc">Wrapper for clUnloadCompiler(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02534">cl2.hpp:2534</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html_aa694b5dfe7413e3a38d1185208ec1ec7"><div class="ttname"><a href="classcl_1_1_kernel.html#aa694b5dfe7413e3a38d1185208ec1ec7">cl::Kernel::setArg</a></div><div class="ttdeci">std::enable_if&lt;!std::is_pointer&lt; T &gt;::value, cl_int &gt;::type setArg(cl_uint index, const T &amp;value)</div><div class="ttdoc">setArg overload taking a POD type </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05856">cl2.hpp:5856</a></div></div>
<div class="ttc" id="classcl_1_1_s_v_m_allocator_html_aec263261a88fb1ec64a3e5f9a4ef41a7"><div class="ttname"><a href="classcl_1_1_s_v_m_allocator.html#aec263261a88fb1ec64a3e5f9a4ef41a7">cl::SVMAllocator::max_size</a></div><div class="ttdeci">size_type max_size() const CL_HPP_NOEXCEPT_</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03493">cl2.hpp:3493</a></div></div>
<div class="ttc" id="classcl_1_1detail_1_1_deleter_html"><div class="ttname"><a href="classcl_1_1detail_1_1_deleter.html">cl::detail::Deleter</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03554">cl2.hpp:3554</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_array_html_ae8738615a72593ca2ec82c20d736da03"><div class="ttname"><a href="classcl_1_1_image1_d_array.html#ae8738615a72593ca2ec82c20d736da03">cl::Image1DArray::Image1DArray</a></div><div class="ttdeci">Image1DArray(const cl_mem &amp;imageArray, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04472">cl2.hpp:4472</a></div></div>
<div class="ttc" id="classcl_1_1_event_html"><div class="ttname"><a href="classcl_1_1_event.html">cl::Event</a></div><div class="ttdoc">Class interface for cl_event. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02978">cl2.hpp:2978</a></div></div>
<div class="ttc" id="namespacecl_html_a048aa194c540d1a3178054256db082b9"><div class="ttname"><a href="namespacecl.html#a048aa194c540d1a3178054256db082b9">cl::fine_svm_vector</a></div><div class="ttdeci">vector&lt; T, cl::SVMAllocator&lt; int, cl::SVMTraitFine&lt;&gt; &gt;&gt; fine_svm_vector</div><div class="ttdoc">Vector alias to simplify contruction of fine-grained SVM containers. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03634">cl2.hpp:3634</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_g_l_html_ada8671d0fd8072472bbb36c6786506d4"><div class="ttname"><a href="classcl_1_1_image2_d_g_l.html#ada8671d0fd8072472bbb36c6786506d4">cl::Image2DGL::Image2DGL</a></div><div class="ttdeci">Image2DGL(const cl_mem &amp;image, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04807">cl2.hpp:4807</a></div></div>
<div class="ttc" id="classcl_1_1_n_d_range_html_aecea642547cae272e0b108a3049afeeb"><div class="ttname"><a href="classcl_1_1_n_d_range.html#aecea642547cae272e0b108a3049afeeb">cl::NDRange::NDRange</a></div><div class="ttdeci">NDRange(size_type size0)</div><div class="ttdoc">Constructs one-dimensional range. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05548">cl2.hpp:5548</a></div></div>
<div class="ttc" id="classcl_1_1_program_html_a400d1a7de104d98f1d3c2aa7dccc21ba"><div class="ttname"><a href="classcl_1_1_program.html#a400d1a7de104d98f1d3c2aa7dccc21ba">cl::Program::Program</a></div><div class="ttdeci">Program(const Context &amp;context, const Sources &amp;sources, cl_int *err=NULL)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06102">cl2.hpp:6102</a></div></div>
<div class="ttc" id="namespacecl_html_aebc48a598e41f0cb98397460ca04ffb6"><div class="ttname"><a href="namespacecl.html#aebc48a598e41f0cb98397460ca04ffb6">cl::atomic_svm_vector</a></div><div class="ttdeci">vector&lt; T, cl::SVMAllocator&lt; int, cl::SVMTraitAtomic&lt;&gt; &gt;&gt; atomic_svm_vector</div><div class="ttdoc">Vector alias to simplify contruction of fine-grained SVM containers that support platform atomics...</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03640">cl2.hpp:3640</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_html_a7f1c8cf8cd50afde28a6a1e1f2d100b0"><div class="ttname"><a href="classcl_1_1_buffer.html#a7f1c8cf8cd50afde28a6a1e1f2d100b0">cl::Buffer::operator=</a></div><div class="ttdeci">Buffer &amp; operator=(const cl_mem &amp;rhs)</div><div class="ttdoc">Assignment from cl_mem - performs shallow copy. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03790">cl2.hpp:3790</a></div></div>
<div class="ttc" id="classcl_1_1_event_html_ad3a362e550fbfa5f18e679357f1cdba8"><div class="ttname"><a href="classcl_1_1_event.html#ad3a362e550fbfa5f18e679357f1cdba8">cl::Event::getInfo</a></div><div class="ttdeci">detail::param_traits&lt; detail::cl_event_info, name &gt;::param_type getInfo(cl_int *err=NULL) const</div><div class="ttdoc">Wrapper for clGetEventInfo() that returns by value. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03018">cl2.hpp:3018</a></div></div>
<div class="ttc" id="classcl_1_1_pipe_html"><div class="ttname"><a href="classcl_1_1_pipe.html">cl::Pipe</a></div><div class="ttdoc">Class interface for Pipe Memory Objects. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05261">cl2.hpp:5261</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a8818c06a2f28a319d5259be7374c93fc"><div class="ttname"><a href="classcl_1_1_command_queue.html#a8818c06a2f28a319d5259be7374c93fc">cl::CommandQueue::enqueueUnmapSVM</a></div><div class="ttdeci">cl_int enqueueUnmapSVM(cl::pointer&lt; T, D &gt; &amp;ptr, const vector&lt; Event &gt; *events=NULL, Event *event=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07823">cl2.hpp:7823</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_html_a01f30cbb6b4e74d81de88beb993b3d58"><div class="ttname"><a href="classcl_1_1_image2_d.html#a01f30cbb6b4e74d81de88beb993b3d58">cl::Image2D::Image2D</a></div><div class="ttdeci">Image2D(const Image2D &amp;img)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04727">cl2.hpp:4727</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_html_a1c82aa24dd8a4d80b698605f60a26d71"><div class="ttname"><a href="classcl_1_1_buffer.html#a1c82aa24dd8a4d80b698605f60a26d71">cl::Buffer::Buffer</a></div><div class="ttdeci">Buffer()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03774">cl2.hpp:3774</a></div></div>
<div class="ttc" id="classcl_1_1_device_command_queue_html_a098b1a3d3485828fde04fc7f10f8e1c4"><div class="ttname"><a href="classcl_1_1_device_command_queue.html#a098b1a3d3485828fde04fc7f10f8e1c4">cl::DeviceCommandQueue::DeviceCommandQueue</a></div><div class="ttdeci">DeviceCommandQueue(const Context &amp;context, const Device &amp;device, DeviceQueueProperties properties=DeviceQueueProperties::None, cl_int *err=NULL)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08283">cl2.hpp:8283</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html_a3ec081fb9656b0780d808563256dfeff"><div class="ttname"><a href="classcl_1_1_kernel.html#a3ec081fb9656b0780d808563256dfeff">cl::Kernel::setArg</a></div><div class="ttdeci">cl_int setArg(cl_uint index, const cl::pointer&lt; T, D &gt; &amp;argPtr)</div><div class="ttdoc">setArg overload taking a shared_ptr type </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05823">cl2.hpp:5823</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_g_l_html_a547ae772ea5529329b278d8d551518f4"><div class="ttname"><a href="classcl_1_1_image3_d_g_l.html#a547ae772ea5529329b278d8d551518f4">cl::Image3DGL::Image3DGL</a></div><div class="ttdeci">Image3DGL(const Image3DGL &amp;img)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05144">cl2.hpp:5144</a></div></div>
<div class="ttc" id="namespacecl_html_a1197a833cdd6664f206b079f2bebd2eb"><div class="ttname"><a href="namespacecl.html#a1197a833cdd6664f206b079f2bebd2eb">cl::copy</a></div><div class="ttdeci">cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer &amp;buffer)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08861">cl2.hpp:8861</a></div></div>
<div class="ttc" id="classcl_1_1_context_html_ad4a19320d57441a2a0ce6db6548d12a9"><div class="ttname"><a href="classcl_1_1_context.html#ad4a19320d57441a2a0ce6db6548d12a9">cl::Context::Context</a></div><div class="ttdeci">Context(const vector&lt; Device &gt; &amp;devices, cl_context_properties *properties=NULL, void(CL_CALLBACK *notifyFptr)(const char *, const void *, size_type, void *)=NULL, void *data=NULL, cl_int *err=NULL)</div><div class="ttdoc">Constructs a context including a list of specified devices. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02643">cl2.hpp:2643</a></div></div>
<div class="ttc" id="classcl_1_1_device_command_queue_html_a897785d635ca36d68444435617ad6fc1"><div class="ttname"><a href="classcl_1_1_device_command_queue.html#a897785d635ca36d68444435617ad6fc1">cl::DeviceCommandQueue::DeviceCommandQueue</a></div><div class="ttdeci">DeviceCommandQueue(const DeviceCommandQueue &amp;queue)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08349">cl2.hpp:8349</a></div></div>
<div class="ttc" id="classcl_1_1_sampler_html_aa32c71d59ca20e83fc283273d0b102cd"><div class="ttname"><a href="classcl_1_1_sampler.html#aa32c71d59ca20e83fc283273d0b102cd">cl::Sampler::Sampler</a></div><div class="ttdeci">Sampler(const cl_sampler &amp;sampler, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_sampler - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05459">cl2.hpp:5459</a></div></div>
<div class="ttc" id="classcl_1_1_s_v_m_trait_write_only_html"><div class="ttname"><a href="classcl_1_1_s_v_m_trait_write_only.html">cl::SVMTraitWriteOnly</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03321">cl2.hpp:3321</a></div></div>
<div class="ttc" id="classcl_1_1_image_html_ad9a2f4b6a5ccbb7056613946bc6ee0b7"><div class="ttname"><a href="classcl_1_1_image.html#ad9a2f4b6a5ccbb7056613946bc6ee0b7">cl::Image::Image</a></div><div class="ttdeci">Image()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04167">cl2.hpp:4167</a></div></div>
<div class="ttc" id="structcl_1_1detail_1_1_reference_handler_3_01cl__device__id_01_4_html_a70614c8eeee136fb4887bae35216d620"><div class="ttname"><a href="structcl_1_1detail_1_1_reference_handler_3_01cl__device__id_01_4.html#a70614c8eeee136fb4887bae35216d620">cl::detail::ReferenceHandler&lt; cl_device_id &gt;::release</a></div><div class="ttdeci">static cl_int release(cl_device_id device)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01489">cl2.hpp:1489</a></div></div>
<div class="ttc" id="classcl_1_1_device_html_a575493c25049dae087540ed8a65efd6d"><div class="ttname"><a href="classcl_1_1_device.html#a575493c25049dae087540ed8a65efd6d">cl::Device::getInfo</a></div><div class="ttdeci">cl_int getInfo(cl_device_info name, T *param) const</div><div class="ttdoc">Wrapper for clGetDeviceInfo(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02074">cl2.hpp:2074</a></div></div>
<div class="ttc" id="classcl_1_1_event_html_a3b035b8ff20d92d0b42f2f0dc8657621"><div class="ttname"><a href="classcl_1_1_event.html#a3b035b8ff20d92d0b42f2f0dc8657621">cl::Event::Event</a></div><div class="ttdeci">Event(const cl_event &amp;event, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_event - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02992">cl2.hpp:2992</a></div></div>
<div class="ttc" id="classcl_1_1_device_command_queue_html_a16613c9133f453851d72c6793d522d81"><div class="ttname"><a href="classcl_1_1_device_command_queue.html#a16613c9133f453851d72c6793d522d81">cl::DeviceCommandQueue::DeviceCommandQueue</a></div><div class="ttdeci">DeviceCommandQueue(const Context &amp;context, const Device &amp;device, cl_uint queueSize, DeviceQueueProperties properties=DeviceQueueProperties::None, cl_int *err=NULL)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08307">cl2.hpp:8307</a></div></div>
<div class="ttc" id="classcl_1_1_n_d_range_html_a6562c4ffea059267582aa22bc96d7435"><div class="ttname"><a href="classcl_1_1_n_d_range.html#a6562c4ffea059267582aa22bc96d7435">cl::NDRange::NDRange</a></div><div class="ttdeci">NDRange(size_type size0, size_type size1)</div><div class="ttdoc">Constructs two-dimensional range. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05557">cl2.hpp:5557</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_g_l_html_a887ef5a5f73871e5419d9cd48cb0aae8"><div class="ttname"><a href="classcl_1_1_image3_d_g_l.html#a887ef5a5f73871e5419d9cd48cb0aae8">cl::Image3DGL::Image3DGL</a></div><div class="ttdeci">Image3DGL(const Context &amp;context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texobj, cl_int *err=NULL)</div><div class="ttdoc">Constructs an Image3DGL in a specified context, from a given GL Texture. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05095">cl2.hpp:5095</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_html_a6ef2c932d8846c4ad7205c5352df687a"><div class="ttname"><a href="classcl_1_1_image2_d.html#a6ef2c932d8846c4ad7205c5352df687a">cl::Image2D::Image2D</a></div><div class="ttdeci">Image2D()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04702">cl2.hpp:4702</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_html_a28f004720b4cc85a902d218e3dad680d"><div class="ttname"><a href="classcl_1_1_image3_d.html#a28f004720b4cc85a902d218e3dad680d">cl::Image3D::Image3D</a></div><div class="ttdeci">Image3D(const cl_mem &amp;image3D, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05036">cl2.hpp:5036</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_html_a95b1eeb977ec2f65b47617bfb541bdbd"><div class="ttname"><a href="classcl_1_1_image2_d.html#a95b1eeb977ec2f65b47617bfb541bdbd">cl::Image2D::Image2D</a></div><div class="ttdeci">Image2D(Image2D &amp;&amp;img) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04741">cl2.hpp:4741</a></div></div>
<div class="ttc" id="classcl_1_1_device_command_queue_html"><div class="ttname"><a href="classcl_1_1_device_command_queue.html">cl::DeviceCommandQueue</a></div><div class="ttdoc">DeviceCommandQueue interface for device cl_command_queues. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08248">cl2.hpp:8248</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_array_html_a5392bebeab2ce9ae4da971c5e8f8a895"><div class="ttname"><a href="classcl_1_1_image1_d_array.html#a5392bebeab2ce9ae4da971c5e8f8a895">cl::Image1DArray::Image1DArray</a></div><div class="ttdeci">Image1DArray(Image1DArray &amp;&amp;img) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04499">cl2.hpp:4499</a></div></div>
<div class="ttc" id="classcl_1_1_pipe_html_a3bac3cb8d2b0d4096ef07fa03a0cafd8"><div class="ttname"><a href="classcl_1_1_pipe.html#a3bac3cb8d2b0d4096ef07fa03a0cafd8">cl::Pipe::Pipe</a></div><div class="ttdeci">Pipe()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05318">cl2.hpp:5318</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a09be675998c51f36aa7744b47eabebd3"><div class="ttname"><a href="classcl_1_1_command_queue.html#a09be675998c51f36aa7744b47eabebd3">cl::CommandQueue::CommandQueue</a></div><div class="ttdeci">CommandQueue(const cl_command_queue &amp;commandQueue, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07078">cl2.hpp:7078</a></div></div>
<div class="ttc" id="classcl_1_1_pipe_html_a58f2c67c39bcbbfd9990a7c01266cda5"><div class="ttname"><a href="classcl_1_1_pipe.html#a58f2c67c39bcbbfd9990a7c01266cda5">cl::Pipe::Pipe</a></div><div class="ttdeci">Pipe(const Pipe &amp;pipe)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05343">cl2.hpp:5343</a></div></div>
<div class="ttc" id="classcl_1_1_event_html_a4ad1d3040fcb24188f1ac2cd73591252"><div class="ttname"><a href="classcl_1_1_event.html#a4ad1d3040fcb24188f1ac2cd73591252">cl::Event::getInfo</a></div><div class="ttdeci">cl_int getInfo(cl_event_info name, T *param) const</div><div class="ttdoc">Wrapper for clGetEventInfo(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03008">cl2.hpp:3008</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_html_a0d7c48026af3f726ce861716b6dbe817"><div class="ttname"><a href="classcl_1_1_image1_d.html#a0d7c48026af3f726ce861716b6dbe817">cl::Image1D::Image1D</a></div><div class="ttdeci">Image1D()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04287">cl2.hpp:4287</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_html_a68c77da266a476c4b4789bd53aa33337"><div class="ttname"><a href="classcl_1_1_buffer.html#a68c77da266a476c4b4789bd53aa33337">cl::Buffer::Buffer</a></div><div class="ttdeci">Buffer(const cl_mem &amp;buffer, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03783">cl2.hpp:3783</a></div></div>
<div class="ttc" id="classcl_1_1_sampler_html_a487aa40df9ababf70fe4c19a0b538f6f"><div class="ttname"><a href="classcl_1_1_sampler.html#a487aa40df9ababf70fe4c19a0b538f6f">cl::Sampler::Sampler</a></div><div class="ttdeci">Sampler(Sampler &amp;&amp;sam) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05490">cl2.hpp:5490</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a736a138dd72e39056e8a9aa3dec5d132"><div class="ttname"><a href="classcl_1_1_command_queue.html#a736a138dd72e39056e8a9aa3dec5d132">cl::CommandQueue::setDefault</a></div><div class="ttdeci">static CommandQueue setDefault(const CommandQueue &amp;default_queue)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07062">cl2.hpp:7062</a></div></div>
<div class="ttc" id="classcl_1_1_program_html_a9223820e8ac1901a84e1a1a02a97954b"><div class="ttname"><a href="classcl_1_1_program.html#a9223820e8ac1901a84e1a1a02a97954b">cl::Program::Program</a></div><div class="ttdeci">Program(const Context &amp;context, const vector&lt; Device &gt; &amp;devices, const string &amp;kernelNames, cl_int *err=NULL)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06216">cl2.hpp:6216</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_ae2ce434c5100e5b467ea8c6561e1f11e"><div class="ttname"><a href="classcl_1_1_command_queue.html#ae2ce434c5100e5b467ea8c6561e1f11e">cl::CommandQueue::CommandQueue</a></div><div class="ttdeci">CommandQueue(const CommandQueue &amp;queue)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07090">cl2.hpp:7090</a></div></div>
<div class="ttc" id="classcl_1_1_s_v_m_trait_read_only_html"><div class="ttname"><a href="classcl_1_1_s_v_m_trait_read_only.html">cl::SVMTraitReadOnly</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03310">cl2.hpp:3310</a></div></div>
<div class="ttc" id="structcl_1_1compatibility_1_1make__kernel_html"><div class="ttname"><a href="structcl_1_1compatibility_1_1make__kernel.html">cl::compatibility::make_kernel</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l09553">cl2.hpp:9553</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_aec8211d19eb2ffbb8adc7f565fe61c3c"><div class="ttname"><a href="classcl_1_1_command_queue.html#aec8211d19eb2ffbb8adc7f565fe61c3c">cl::CommandQueue::enqueueMapSVM</a></div><div class="ttdeci">cl_int enqueueMapSVM(T *ptr, cl_bool blocking, cl_map_flags flags, size_type size, const vector&lt; Event &gt; *events=NULL, Event *event=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07693">cl2.hpp:7693</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html_a0869347f24520f2d59222f74297c5fe5"><div class="ttname"><a href="classcl_1_1_kernel.html#a0869347f24520f2d59222f74297c5fe5">cl::Kernel::Kernel</a></div><div class="ttdeci">Kernel(Kernel &amp;&amp;kernel) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05715">cl2.hpp:5715</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a3081328f7b10be88e87eb719d3ad6307"><div class="ttname"><a href="classcl_1_1_command_queue.html#a3081328f7b10be88e87eb719d3ad6307">cl::CommandQueue::enqueueFillImage</a></div><div class="ttdeci">cl_int enqueueFillImage(const Image &amp;image, cl_uint4 fillColor, const array&lt; size_type, 3 &gt; &amp;origin, const array&lt; size_type, 3 &gt; &amp;region, const vector&lt; Event &gt; *events=NULL, Event *event=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07539">cl2.hpp:7539</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_html_abe1d541bfe4a39bc5bae819cd5c6ef0e"><div class="ttname"><a href="classcl_1_1_image2_d.html#abe1d541bfe4a39bc5bae819cd5c6ef0e">cl::Image2D::Image2D</a></div><div class="ttdeci">Image2D(const Context &amp;context, ImageFormat format, const Buffer &amp;sourceBuffer, size_type width, size_type height, size_type row_pitch=0, cl_int *err=nullptr)</div><div class="ttdoc">Constructs a 2D Image from a buffer. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04598">cl2.hpp:4598</a></div></div>
<div class="ttc" id="classcl_1_1_program_html_a367cf581b43d8ad021806a4714753437"><div class="ttname"><a href="classcl_1_1_program.html#a367cf581b43d8ad021806a4714753437">cl::Program::Program</a></div><div class="ttdeci">Program(const Sources &amp;sources, cl_int *err=NULL)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06067">cl2.hpp:6067</a></div></div>
<div class="ttc" id="classcl_1_1_device_html_ad28b573c8a28028a06ded4e1dc7fa725"><div class="ttname"><a href="classcl_1_1_device.html#ad28b573c8a28028a06ded4e1dc7fa725">cl::Device::Device</a></div><div class="ttdeci">Device(const cl_device_id &amp;device, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_device_id. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02002">cl2.hpp:2002</a></div></div>
<div class="ttc" id="classcl_1_1_n_d_range_html_ad7121613ed829d6a21f4866e96b84217"><div class="ttname"><a href="classcl_1_1_n_d_range.html#ad7121613ed829d6a21f4866e96b84217">cl::NDRange::NDRange</a></div><div class="ttdeci">NDRange()</div><div class="ttdoc">Default constructor - resulting range has zero dimensions. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05539">cl2.hpp:5539</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_g_l_html_acc718908deb55b07dea09645fe322dbc"><div class="ttname"><a href="classcl_1_1_buffer_g_l.html#acc718908deb55b07dea09645fe322dbc">cl::BufferGL::BufferGL</a></div><div class="ttdeci">BufferGL(const BufferGL &amp;buf)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04024">cl2.hpp:4024</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_html_a108db5f42ee6e0a333ee820548b1d390"><div class="ttname"><a href="classcl_1_1_image3_d.html#a108db5f42ee6e0a333ee820548b1d390">cl::Image3D::operator=</a></div><div class="ttdeci">Image3D &amp; operator=(const cl_mem &amp;rhs)</div><div class="ttdoc">Assignment from cl_mem - performs shallow copy. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05043">cl2.hpp:5043</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a975c3dce399cb77a5c6b0e294e4778fe"><div class="ttname"><a href="classcl_1_1_command_queue.html#a975c3dce399cb77a5c6b0e294e4778fe">cl::CommandQueue::CommandQueue</a></div><div class="ttdeci">CommandQueue(const Context &amp;context, QueueProperties properties, cl_int *err=NULL)</div><div class="ttdoc">Constructs a CommandQueue for an implementation defined device in the given context Will return an CL...</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06881">cl2.hpp:6881</a></div></div>
<div class="ttc" id="classcl_1_1_memory_html_a15e14fda4062d21ad354126a599a6111"><div class="ttname"><a href="classcl_1_1_memory.html#a15e14fda4062d21ad354126a599a6111">cl::Memory::setDestructorCallback</a></div><div class="ttdeci">cl_int setDestructorCallback(void(CL_CALLBACK *pfn_notify)(cl_mem, void *), void *user_data=NULL)</div><div class="ttdoc">Registers a callback function to be called when the memory object is no longer needed. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03258">cl2.hpp:3258</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a8462de408ebfaf6332429a92b7938490"><div class="ttname"><a href="classcl_1_1_command_queue.html#a8462de408ebfaf6332429a92b7938490">cl::CommandQueue::CommandQueue</a></div><div class="ttdeci">CommandQueue(cl_command_queue_properties properties, cl_int *err=NULL)</div><div class="ttdoc">Constructs a CommandQueue based on passed properties. Will return an CL_INVALID_QUEUE_PROPERTIES erro...</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06685">cl2.hpp:6685</a></div></div>
<div class="ttc" id="classcl_1_1_s_v_m_trait_read_write_html"><div class="ttname"><a href="classcl_1_1_s_v_m_trait_read_write.html">cl::SVMTraitReadWrite</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03299">cl2.hpp:3299</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_html_a66ee6c9c837b5f74f02bef8f90459b5c"><div class="ttname"><a href="classcl_1_1_buffer.html#a66ee6c9c837b5f74f02bef8f90459b5c">cl::Buffer::Buffer</a></div><div class="ttdeci">Buffer(const Context &amp;context, cl_mem_flags flags, size_type size, void *host_ptr=NULL, cl_int *err=NULL)</div><div class="ttdoc">Constructs a Buffer in a specified context. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03662">cl2.hpp:3662</a></div></div>
<div class="ttc" id="classcl_1_1_event_html_a51f83064c2024df649667071e81fb847"><div class="ttname"><a href="classcl_1_1_event.html#a51f83064c2024df649667071e81fb847">cl::Event::wait</a></div><div class="ttdeci">cl_int wait() const</div><div class="ttdoc">Blocks the calling thread until this event completes. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03056">cl2.hpp:3056</a></div></div>
<div class="ttc" id="structcl_1_1_image_format_html_adf48b6e9dfdfefb7583e20826c3b4a14"><div class="ttname"><a href="structcl_1_1_image_format.html#adf48b6e9dfdfefb7583e20826c3b4a14">cl::ImageFormat::ImageFormat</a></div><div class="ttdeci">ImageFormat()</div><div class="ttdoc">Default constructor - performs no initialization. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01932">cl2.hpp:1932</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_functor_html_a925e6594f59e5e8038770efa2bd4b532"><div class="ttname"><a href="classcl_1_1_kernel_functor.html#a925e6594f59e5e8038770efa2bd4b532">cl::KernelFunctor::result_type</a></div><div class="ttdeci">Event result_type</div><div class="ttdoc">Return type of the functor. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l09478">cl2.hpp:9478</a></div></div>
<div class="ttc" id="classcl_1_1_platform_html"><div class="ttname"><a href="classcl_1_1_platform.html">cl::Platform</a></div><div class="ttdoc">Class interface for cl_platform_id. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02192">cl2.hpp:2192</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html_abadacb0037f711f3460cf5c44b2d4796"><div class="ttname"><a href="classcl_1_1_kernel.html#abadacb0037f711f3460cf5c44b2d4796">cl::Kernel::setSVMPointers</a></div><div class="ttdeci">cl_int setSVMPointers(const std::array&lt; void *, ArrayLength &gt; &amp;pointerList)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05894">cl2.hpp:5894</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_array_html_a8c16539dc725c60ef4ff4680f8353507"><div class="ttname"><a href="classcl_1_1_image2_d_array.html#a8c16539dc725c60ef4ff4680f8353507">cl::Image2DArray::Image2DArray</a></div><div class="ttdeci">Image2DArray(const cl_mem &amp;imageArray, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04905">cl2.hpp:4905</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_html_a2cfe3144f7d69d4b390edfa934641dcf"><div class="ttname"><a href="classcl_1_1_buffer.html#a2cfe3144f7d69d4b390edfa934641dcf">cl::Buffer::Buffer</a></div><div class="ttdeci">Buffer(const Buffer &amp;buf)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03799">cl2.hpp:3799</a></div></div>
<div class="ttc" id="classcl_1_1_image_html_a644c4f0a68b5fbb716b0157f34d903b9"><div class="ttname"><a href="classcl_1_1_image.html#a644c4f0a68b5fbb716b0157f34d903b9">cl::Image::Image</a></div><div class="ttdeci">Image(const cl_mem &amp;image, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04176">cl2.hpp:4176</a></div></div>
<div class="ttc" id="classcl_1_1_memory_html_a23691d3d5e70f47538f1cde3741b0367"><div class="ttname"><a href="classcl_1_1_memory.html#a23691d3d5e70f47538f1cde3741b0367">cl::Memory::Memory</a></div><div class="ttdeci">Memory(const Memory &amp;mem)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03195">cl2.hpp:3195</a></div></div>
<div class="ttc" id="classcl_1_1_program_html_a0ec5552449e9fefc46e7bcd399d15f51"><div class="ttname"><a href="classcl_1_1_program.html#a0ec5552449e9fefc46e7bcd399d15f51">cl::Program::Program</a></div><div class="ttdeci">Program(const Program &amp;program)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06266">cl2.hpp:6266</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_g_l_html_ada9b870e058a54ccaf4789e045d1d570"><div class="ttname"><a href="classcl_1_1_buffer_g_l.html#ada9b870e058a54ccaf4789e045d1d570">cl::BufferGL::getObjectInfo</a></div><div class="ttdeci">cl_int getObjectInfo(cl_gl_object_type *type, cl_GLuint *gl_object_name)</div><div class="ttdoc">Wrapper for clGetGLObjectInfo(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04050">cl2.hpp:4050</a></div></div>
<div class="ttc" id="structcl_1_1detail_1_1_reference_handler_3_01cl__device__id_01_4_html_ae3392ce2c4055446680bde82e60c976c"><div class="ttname"><a href="structcl_1_1detail_1_1_reference_handler_3_01cl__device__id_01_4.html#ae3392ce2c4055446680bde82e60c976c">cl::detail::ReferenceHandler&lt; cl_device_id &gt;::retain</a></div><div class="ttdeci">static cl_int retain(cl_device_id device)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01478">cl2.hpp:1478</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_g_l_html_a21a8fd551430095711413e831cd42ddd"><div class="ttname"><a href="classcl_1_1_image3_d_g_l.html#a21a8fd551430095711413e831cd42ddd">cl::Image3DGL::Image3DGL</a></div><div class="ttdeci">Image3DGL()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05119">cl2.hpp:5119</a></div></div>
<div class="ttc" id="classcl_1_1detail_1_1_s_v_m_trait_null_html"><div class="ttname"><a href="classcl_1_1detail_1_1_s_v_m_trait_null.html">cl::detail::SVMTraitNull</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03288">cl2.hpp:3288</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_html_af6e0b8578a6e36d76854468ae9dee400"><div class="ttname"><a href="classcl_1_1_image2_d.html#af6e0b8578a6e36d76854468ae9dee400">cl::Image2D::Image2D</a></div><div class="ttdeci">Image2D(const Context &amp;context, cl_channel_order order, const Image &amp;sourceImage, cl_int *err=nullptr)</div><div class="ttdoc">Constructs a 2D Image from an image. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04648">cl2.hpp:4648</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html"><div class="ttname"><a href="classcl_1_1_command_queue.html">cl::CommandQueue</a></div><div class="ttdoc">CommandQueue interface for cl_command_queue. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06619">cl2.hpp:6619</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_html_a2a8221a4c64c1aaf47468c4ef6c05a61"><div class="ttname"><a href="classcl_1_1_image2_d.html#a2a8221a4c64c1aaf47468c4ef6c05a61">cl::Image2D::Image2D</a></div><div class="ttdeci">Image2D(const cl_mem &amp;image2D, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04711">cl2.hpp:4711</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_af7e83f7dec93b2700b8ce4380d81bfcb"><div class="ttname"><a href="classcl_1_1_command_queue.html#af7e83f7dec93b2700b8ce4380d81bfcb">cl::CommandQueue::enqueueUnmapSVM</a></div><div class="ttdeci">cl_int enqueueUnmapSVM(cl::vector&lt; T, Alloc &gt; &amp;container, const vector&lt; Event &gt; *events=NULL, Event *event=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07848">cl2.hpp:7848</a></div></div>
<div class="ttc" id="classcl_1_1_sampler_html_a41d7df0a069717bc570a6ccdab3d3acd"><div class="ttname"><a href="classcl_1_1_sampler.html#a41d7df0a069717bc570a6ccdab3d3acd">cl::Sampler::Sampler</a></div><div class="ttdeci">Sampler(const Context &amp;context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, cl_filter_mode filter_mode, cl_int *err=NULL)</div><div class="ttdoc">Constructs a Sampler in a specified context. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05412">cl2.hpp:5412</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_html_a7c8b730eba37624cb6d3af30f8a1c276"><div class="ttname"><a href="classcl_1_1_image1_d.html#a7c8b730eba37624cb6d3af30f8a1c276">cl::Image1D::Image1D</a></div><div class="ttdeci">Image1D(const cl_mem &amp;image1D, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04296">cl2.hpp:4296</a></div></div>
<div class="ttc" id="classcl_1_1_s_v_m_allocator_html_a44858d70971c7801aa62d7a64d18df00"><div class="ttname"><a href="classcl_1_1_s_v_m_allocator.html#a44858d70971c7801aa62d7a64d18df00">cl::SVMAllocator::allocate</a></div><div class="ttdeci">pointer allocate(size_type size, typename cl::SVMAllocator&lt; void, SVMTrait &gt;::const_pointer=0)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03451">cl2.hpp:3451</a></div></div>
<div class="ttc" id="classcl_1_1_device_command_queue_html_acf98d7e70d84afc31789a6f26a95d14b"><div class="ttname"><a href="classcl_1_1_device_command_queue.html#acf98d7e70d84afc31789a6f26a95d14b">cl::DeviceCommandQueue::makeDefault</a></div><div class="ttdeci">static DeviceCommandQueue makeDefault(cl_int *err=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08402">cl2.hpp:8402</a></div></div>
<div class="ttc" id="classcl_1_1_user_event_html_a1ee5bc016d511a4fec5f23b50a70821a"><div class="ttname"><a href="classcl_1_1_user_event.html#a1ee5bc016d511a4fec5f23b50a70821a">cl::UserEvent::UserEvent</a></div><div class="ttdeci">UserEvent()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03125">cl2.hpp:3125</a></div></div>
<div class="ttc" id="classcl_1_1_device_command_queue_html_acaf1dee2f55faeac05b2c1c66daf51c2"><div class="ttname"><a href="classcl_1_1_device_command_queue.html#acaf1dee2f55faeac05b2c1c66daf51c2">cl::DeviceCommandQueue::DeviceCommandQueue</a></div><div class="ttdeci">DeviceCommandQueue(const cl_command_queue &amp;commandQueue, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_command_queue - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08337">cl2.hpp:8337</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html_aed996666686cddb41d660839e709fcd0"><div class="ttname"><a href="classcl_1_1_kernel.html#aed996666686cddb41d660839e709fcd0">cl::Kernel::enableFineGrainedSystemSVM</a></div><div class="ttdeci">cl_int enableFineGrainedSystemSVM(bool svmEnabled)</div><div class="ttdoc">Enable fine-grained system SVM. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05915">cl2.hpp:5915</a></div></div>
<div class="ttc" id="structcl_1_1_image_format_html_a039deeaa451a52448014794e7dae30ba"><div class="ttname"><a href="structcl_1_1_image_format.html#a039deeaa451a52448014794e7dae30ba">cl::ImageFormat::ImageFormat</a></div><div class="ttdeci">ImageFormat(cl_channel_order order, cl_channel_type type)</div><div class="ttdoc">Initializing constructor. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01935">cl2.hpp:1935</a></div></div>
<div class="ttc" id="classcl_1_1_pipe_html_aab41e4a35cf93fccb645734eff752724"><div class="ttname"><a href="classcl_1_1_pipe.html#aab41e4a35cf93fccb645734eff752724">cl::Pipe::Pipe</a></div><div class="ttdeci">Pipe(const cl_mem &amp;pipe, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05327">cl2.hpp:5327</a></div></div>
<div class="ttc" id="classcl_1_1_context_html_ac29ecd6b0bb1c9ff002cc7d4b0b31c99"><div class="ttname"><a href="classcl_1_1_context.html#ac29ecd6b0bb1c9ff002cc7d4b0b31c99">cl::Context::getInfo</a></div><div class="ttdeci">detail::param_traits&lt; detail::cl_context_info, name &gt;::param_type getInfo(cl_int *err=NULL) const</div><div class="ttdoc">Wrapper for clGetContextInfo() that returns by value. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02876">cl2.hpp:2876</a></div></div>
<div class="ttc" id="classcl_1_1_pipe_html_a0cb346bc58e89a18474fa84bc2886c58"><div class="ttname"><a href="classcl_1_1_pipe.html#a0cb346bc58e89a18474fa84bc2886c58">cl::Pipe::Pipe</a></div><div class="ttdeci">Pipe(Pipe &amp;&amp;pipe) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05357">cl2.hpp:5357</a></div></div>
<div class="ttc" id="namespacecl_html_ae97dc5bb86e2c3c3935280a86cda301c"><div class="ttname"><a href="namespacecl.html#ae97dc5bb86e2c3c3935280a86cda301c">cl::mapSVM</a></div><div class="ttdeci">cl_int mapSVM(cl::vector&lt; T, Alloc &gt; &amp;container)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08963">cl2.hpp:8963</a></div></div>
<div class="ttc" id="namespacecl_html_a6569925e399ff834fc45bde4a9d6f7a1"><div class="ttname"><a href="namespacecl.html#a6569925e399ff834fc45bde4a9d6f7a1">cl::allocate_pointer</a></div><div class="ttdeci">cl::pointer&lt; T, detail::Deleter&lt; Alloc &gt; &gt; allocate_pointer(const Alloc &amp;alloc_, Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03581">cl2.hpp:3581</a></div></div>
<div class="ttc" id="classcl_1_1_user_event_html"><div class="ttname"><a href="classcl_1_1_user_event.html">cl::UserEvent</a></div><div class="ttdoc">Class interface for user events (a subset of cl_event&amp;#39;s). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03102">cl2.hpp:3102</a></div></div>
<div class="ttc" id="classcl_1_1_s_v_m_allocator_html_abaa89b1232891a728d3530dbd71e7cb6"><div class="ttname"><a href="classcl_1_1_s_v_m_allocator.html#abaa89b1232891a728d3530dbd71e7cb6">cl::SVMAllocator::operator==</a></div><div class="ttdeci">bool operator==(SVMAllocator const &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03521">cl2.hpp:3521</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_acb2c278ef4f177c5d01035c008a5cb3e"><div class="ttname"><a href="classcl_1_1_command_queue.html#acb2c278ef4f177c5d01035c008a5cb3e">cl::CommandQueue::enqueueFillImage</a></div><div class="ttdeci">cl_int enqueueFillImage(const Image &amp;image, cl_int4 fillColor, const array&lt; size_type, 3 &gt; &amp;origin, const array&lt; size_type, 3 &gt; &amp;region, const vector&lt; Event &gt; *events=NULL, Event *event=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07505">cl2.hpp:7505</a></div></div>
<div class="ttc" id="classcl_1_1_program_html_aaac370eec783f85a00945d701d6a7e19"><div class="ttname"><a href="classcl_1_1_program.html#aaac370eec783f85a00945d701d6a7e19">cl::Program::Program</a></div><div class="ttdeci">Program(const cl_program &amp;program, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06254">cl2.hpp:6254</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_affae2ea7a86c23e01c11fbdcdc149300"><div class="ttname"><a href="classcl_1_1_command_queue.html#affae2ea7a86c23e01c11fbdcdc149300">cl::CommandQueue::enqueueUnmapSVM</a></div><div class="ttdeci">cl_int enqueueUnmapSVM(T *ptr, const vector&lt; Event &gt; *events=NULL, Event *event=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07798">cl2.hpp:7798</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html_a0c71f37cb53fbe492847fbb2dff2bfed"><div class="ttname"><a href="classcl_1_1_kernel.html#a0c71f37cb53fbe492847fbb2dff2bfed">cl::Kernel::Kernel</a></div><div class="ttdeci">Kernel(const cl_kernel &amp;kernel, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_kernel - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05684">cl2.hpp:5684</a></div></div>
<div class="ttc" id="classcl_1_1_program_html_a83a87a7d0dbbede2b28dcf8836a624b0"><div class="ttname"><a href="classcl_1_1_program.html#a83a87a7d0dbbede2b28dcf8836a624b0">cl::Program::getBuildInfo</a></div><div class="ttdeci">vector&lt; std::pair&lt; cl::Device, typename detail::param_traits&lt; detail::cl_program_build_info, name &gt;::param_type &gt; &gt; getBuildInfo(cl_int *err=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06404">cl2.hpp:6404</a></div></div>
<div class="ttc" id="classcl_1_1_event_html_a3f5ef317602809c4a99d6f244f758b5f"><div class="ttname"><a href="classcl_1_1_event.html#a3f5ef317602809c4a99d6f244f758b5f">cl::Event::getProfilingInfo</a></div><div class="ttdeci">cl_int getProfilingInfo(cl_profiling_info name, T *param) const</div><div class="ttdoc">Wrapper for clGetEventProfilingInfo(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03031">cl2.hpp:3031</a></div></div>
<div class="ttc" id="classcl_1_1_sampler_html"><div class="ttname"><a href="classcl_1_1_sampler.html">cl::Sampler</a></div><div class="ttdoc">Class interface for cl_sampler. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05402">cl2.hpp:5402</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_functor_html"><div class="ttname"><a href="classcl_1_1_kernel_functor.html">cl::KernelFunctor</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l09442">cl2.hpp:9442</a></div></div>
<div class="ttc" id="classcl_1_1_image_g_l_html_a0d65fbe2960edcd3b2ba6f857d98b813"><div class="ttname"><a href="classcl_1_1_image_g_l.html#a0d65fbe2960edcd3b2ba6f857d98b813">cl::ImageGL::ImageGL</a></div><div class="ttdeci">ImageGL(const ImageGL &amp;img)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05225">cl2.hpp:5225</a></div></div>
<div class="ttc" id="namespacecl_html_a2f9d06d8196d7a2f4cf196d5bb7e5dd0"><div class="ttname"><a href="namespacecl.html#a2f9d06d8196d7a2f4cf196d5bb7e5dd0">cl::Local</a></div><div class="ttdeci">LocalSpaceArg Local(size_type size)</div><div class="ttdoc">Helper function for generating LocalSpaceArg objects. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05654">cl2.hpp:5654</a></div></div>
<div class="ttc" id="structcl_1_1compatibility_1_1make__kernel_html_ab5a793302f7651ad151a1e4b585be5d4"><div class="ttname"><a href="structcl_1_1compatibility_1_1make__kernel.html#ab5a793302f7651ad151a1e4b585be5d4">cl::compatibility::make_kernel::result_type</a></div><div class="ttdeci">Event result_type</div><div class="ttdoc">Return type of the functor. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l09572">cl2.hpp:9572</a></div></div>
<div class="ttc" id="classcl_1_1_memory_html_a71a7dacb458fb6a8993c586f5c9fab6f"><div class="ttname"><a href="classcl_1_1_memory.html#a71a7dacb458fb6a8993c586f5c9fab6f">cl::Memory::getInfo</a></div><div class="ttdeci">detail::param_traits&lt; detail::cl_mem_info, name &gt;::param_type getInfo(cl_int *err=NULL) const</div><div class="ttdoc">Wrapper for clGetMemObjectInfo() that returns by value. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03233">cl2.hpp:3233</a></div></div>
<div class="ttc" id="classcl_1_1_image_html"><div class="ttname"><a href="classcl_1_1_image.html">cl::Image</a></div><div class="ttdoc">C++ base class for Image Memory objects. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04163">cl2.hpp:4163</a></div></div>
<div class="ttc" id="namespacecl_html_abb2c4e45814ea569a27c39d37471b2a4"><div class="ttname"><a href="namespacecl.html#abb2c4e45814ea569a27c39d37471b2a4">cl::enqueueMapSVM</a></div><div class="ttdeci">cl_int enqueueMapSVM(T *ptr, cl_bool blocking, cl_map_flags flags, size_type size, const vector&lt; Event &gt; *events=NULL, Event *event=NULL)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08674">cl2.hpp:8674</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_html_ac9eaf7f65478faefa7053ab6c9f1e16d"><div class="ttname"><a href="classcl_1_1_buffer.html#ac9eaf7f65478faefa7053ab6c9f1e16d">cl::Buffer::Buffer</a></div><div class="ttdeci">Buffer(cl_mem_flags flags, size_type size, void *host_ptr=NULL, cl_int *err=NULL)</div><div class="ttdoc">Constructs a Buffer in the default context. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03687">cl2.hpp:3687</a></div></div>
<div class="ttc" id="classcl_1_1_context_html_a24a8392d2cb8fcdc5dbf4dd723ee74b4"><div class="ttname"><a href="classcl_1_1_context.html#a24a8392d2cb8fcdc5dbf4dd723ee74b4">cl::Context::setDefault</a></div><div class="ttdeci">static Context setDefault(const Context &amp;default_context)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02835">cl2.hpp:2835</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a58d16044448bcb2797f490a33e450bde"><div class="ttname"><a href="classcl_1_1_command_queue.html#a58d16044448bcb2797f490a33e450bde">cl::CommandQueue::enqueueMapSVM</a></div><div class="ttdeci">cl_int enqueueMapSVM(cl::pointer&lt; T, D &gt; &amp;ptr, cl_bool blocking, cl_map_flags flags, size_type size, const vector&lt; Event &gt; *events=NULL, Event *event=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07721">cl2.hpp:7721</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_g_l_html_a1f34aee208c887c15d8e699f629db86b"><div class="ttname"><a href="classcl_1_1_buffer_g_l.html#a1f34aee208c887c15d8e699f629db86b">cl::BufferGL::BufferGL</a></div><div class="ttdeci">BufferGL(BufferGL &amp;&amp;buf) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04038">cl2.hpp:4038</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_html"><div class="ttname"><a href="classcl_1_1_buffer.html">cl::Buffer</a></div><div class="ttdoc">Class interface for Buffer Memory Objects. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03651">cl2.hpp:3651</a></div></div>
<div class="ttc" id="classcl_1_1_sampler_html_afc12ea7675deef235c907034f72a0476"><div class="ttname"><a href="classcl_1_1_sampler.html#afc12ea7675deef235c907034f72a0476">cl::Sampler::getInfo</a></div><div class="ttdeci">detail::param_traits&lt; detail::cl_sampler_info, name &gt;::param_type getInfo(cl_int *err=NULL) const</div><div class="ttdoc">Wrapper for clGetSamplerInfo() that returns by value. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05513">cl2.hpp:5513</a></div></div>
<div class="ttc" id="classcl_1_1_device_html_abff439f0de1ed8699a1b93a702d0fc65"><div class="ttname"><a href="classcl_1_1_device.html#abff439f0de1ed8699a1b93a702d0fc65">cl::Device::setDefault</a></div><div class="ttdeci">static Device setDefault(const Device &amp;default_device)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02027">cl2.hpp:2027</a></div></div>
<div class="ttc" id="classcl_1_1_device_command_queue_html_ab58e477e1a9bf099e1faf77565e80856"><div class="ttname"><a href="classcl_1_1_device_command_queue.html#ab58e477e1a9bf099e1faf77565e80856">cl::DeviceCommandQueue::DeviceCommandQueue</a></div><div class="ttdeci">DeviceCommandQueue()</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08255">cl2.hpp:8255</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_buffer_html_ac2a5ec18ce60b2a152f81a3ecca54b9a"><div class="ttname"><a href="classcl_1_1_image1_d_buffer.html#ac2a5ec18ce60b2a152f81a3ecca54b9a">cl::Image1DBuffer::Image1DBuffer</a></div><div class="ttdeci">Image1DBuffer(Image1DBuffer &amp;&amp;img) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04410">cl2.hpp:4410</a></div></div>
<div class="ttc" id="classcl_1_1_n_d_range_html"><div class="ttname"><a href="classcl_1_1_n_d_range.html">cl::NDRange</a></div><div class="ttdoc">Class interface for specifying NDRange values. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05531">cl2.hpp:5531</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_html"><div class="ttname"><a href="classcl_1_1_image2_d.html">cl::Image2D</a></div><div class="ttdoc">Class interface for 2D Image Memory objects. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04520">cl2.hpp:4520</a></div></div>
<div class="ttc" id="classcl_1_1_image_g_l_html_a838ca2ca2a61984f58fc4b4bba8ff225"><div class="ttname"><a href="classcl_1_1_image_g_l.html#a838ca2ca2a61984f58fc4b4bba8ff225">cl::ImageGL::ImageGL</a></div><div class="ttdeci">ImageGL(ImageGL &amp;&amp;img) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05239">cl2.hpp:5239</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_html"><div class="ttname"><a href="classcl_1_1_image1_d.html">cl::Image1D</a></div><div class="ttdoc">Class interface for 1D Image Memory objects. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04250">cl2.hpp:4250</a></div></div>
<div class="ttc" id="classcl_1_1_kernel_html"><div class="ttname"><a href="classcl_1_1_kernel.html">cl::Kernel</a></div><div class="ttdoc">Class interface for cl_kernel. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05668">cl2.hpp:5668</a></div></div>
<div class="ttc" id="structcl_1_1detail_1_1_kernel_argument_handler_html"><div class="ttname"><a href="structcl_1_1detail_1_1_kernel_argument_handler.html">cl::detail::KernelArgumentHandler</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05618">cl2.hpp:5618</a></div></div>
<div class="ttc" id="classcl_1_1_n_d_range_html_a8fd331a55e1c4871e8ffa3a35b95e538"><div class="ttname"><a href="classcl_1_1_n_d_range.html#a8fd331a55e1c4871e8ffa3a35b95e538">cl::NDRange::NDRange</a></div><div class="ttdeci">NDRange(size_type size0, size_type size1, size_type size2)</div><div class="ttdoc">Constructs three-dimensional range. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05566">cl2.hpp:5566</a></div></div>
<div class="ttc" id="classcl_1_1_event_html_ae84b90e930f72c1019435dd7cefa2fbd"><div class="ttname"><a href="classcl_1_1_event.html#ae84b90e930f72c1019435dd7cefa2fbd">cl::Event::waitForEvents</a></div><div class="ttdeci">static cl_int waitForEvents(const vector&lt; Event &gt; &amp;events)</div><div class="ttdoc">Blocks the calling thread until every event specified is complete. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03088">cl2.hpp:3088</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_html"><div class="ttname"><a href="classcl_1_1_image3_d.html">cl::Image3D</a></div><div class="ttdoc">Class interface for 3D Image Memory objects. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04949">cl2.hpp:4949</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_render_g_l_html"><div class="ttname"><a href="classcl_1_1_buffer_render_g_l.html">cl::BufferRenderGL</a></div><div class="ttdoc">Class interface for GL Render Buffer Memory Objects. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04068">cl2.hpp:4068</a></div></div>
<div class="ttc" id="classcl_1_1_image_g_l_html"><div class="ttname"><a href="classcl_1_1_image_g_l.html">cl::ImageGL</a></div><div class="ttdoc">general image interface for GL interop. We abstract the 2D and 3D GL images into a single instance he...</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05178">cl2.hpp:5178</a></div></div>
<div class="ttc" id="classcl_1_1_s_v_m_trait_atomic_html"><div class="ttname"><a href="classcl_1_1_s_v_m_trait_atomic.html">cl::SVMTraitAtomic</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03353">cl2.hpp:3353</a></div></div>
<div class="ttc" id="classcl_1_1_user_event_html_ad1df3a34596fee2bf6f1de6893192ae5"><div class="ttname"><a href="classcl_1_1_user_event.html#ad1df3a34596fee2bf6f1de6893192ae5">cl::UserEvent::setStatus</a></div><div class="ttdeci">cl_int setStatus(cl_int status)</div><div class="ttdoc">Sets the execution status of a user event object. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03131">cl2.hpp:3131</a></div></div>
<div class="ttc" id="structcl_1_1detail_1_1param__traits_html"><div class="ttname"><a href="structcl_1_1detail_1_1param__traits.html">cl::detail::param_traits</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01304">cl2.hpp:1304</a></div></div>
<div class="ttc" id="classcl_1_1_platform_html_aa7d1ac92678763f18a40c7bb026b6fb1"><div class="ttname"><a href="classcl_1_1_platform.html#aa7d1ac92678763f18a40c7bb026b6fb1">cl::Platform::getInfo</a></div><div class="ttdeci">detail::param_traits&lt; detail::cl_platform_info, name &gt;::param_type getInfo(cl_int *err=NULL) const</div><div class="ttdoc">Wrapper for clGetPlatformInfo() that returns by value. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02323">cl2.hpp:2323</a></div></div>
<div class="ttc" id="classcl_1_1_device_html_a6131ff3eb77c31dfba11091a3c0f4235"><div class="ttname"><a href="classcl_1_1_device.html#a6131ff3eb77c31dfba11091a3c0f4235">cl::Device::Device</a></div><div class="ttdeci">Device()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01996">cl2.hpp:1996</a></div></div>
<div class="ttc" id="classcl_1_1_context_html_a8f7e1c72445ca6e249bc7a6c9278984d"><div class="ttname"><a href="classcl_1_1_context.html#a8f7e1c72445ca6e249bc7a6c9278984d">cl::Context::Context</a></div><div class="ttdeci">Context()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02843">cl2.hpp:2843</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_array_html_a4cb521f49a58328fcf7d8d31ba81f573"><div class="ttname"><a href="classcl_1_1_image2_d_array.html#a4cb521f49a58328fcf7d8d31ba81f573">cl::Image2DArray::Image2DArray</a></div><div class="ttdeci">Image2DArray(const Image2DArray &amp;img)</div><div class="ttdoc">Copy constructor to forward copy to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04916">cl2.hpp:4916</a></div></div>
<div class="ttc" id="classcl_1_1_device_html"><div class="ttname"><a href="classcl_1_1_device.html">cl::Device</a></div><div class="ttdoc">Class interface for cl_device_id. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01959">cl2.hpp:1959</a></div></div>
<div class="ttc" id="structcl_1_1detail_1_1_reference_handler_html"><div class="ttname"><a href="structcl_1_1detail_1_1_reference_handler.html">cl::detail::ReferenceHandler</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01080">cl2.hpp:1080</a></div></div>
<div class="ttc" id="classcl_1_1_context_html_ae2944171ba4199247499fd0bf3c49b81"><div class="ttname"><a href="classcl_1_1_context.html#ae2944171ba4199247499fd0bf3c49b81">cl::Context::Context</a></div><div class="ttdeci">Context(Context &amp;&amp;ctx) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02802">cl2.hpp:2802</a></div></div>
<div class="ttc" id="classcl_1_1_context_html_ad180f6f7d8b5a95710ab72f96162b051"><div class="ttname"><a href="classcl_1_1_context.html#ad180f6f7d8b5a95710ab72f96162b051">cl::Context::getDefault</a></div><div class="ttdeci">static Context getDefault(cl_int *err=NULL)</div><div class="ttdoc">Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02818">cl2.hpp:2818</a></div></div>
<div class="ttc" id="classcl_1_1_context_html_a591bd7ba3cbe268a619b8175627a8985"><div class="ttname"><a href="classcl_1_1_context.html#a591bd7ba3cbe268a619b8175627a8985">cl::Context::Context</a></div><div class="ttdeci">Context(cl_device_type type, cl_context_properties *properties=NULL, void(CL_CALLBACK *notifyFptr)(const char *, const void *, size_type, void *)=NULL, void *data=NULL, cl_int *err=NULL)</div><div class="ttdoc">Constructs a context including all or a subset of devices of a specified type. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02704">cl2.hpp:2704</a></div></div>
<div class="ttc" id="classcl_1_1_memory_html_a6fa9f585a65beebcb75e41cca70ee1bb"><div class="ttname"><a href="classcl_1_1_memory.html#a6fa9f585a65beebcb75e41cca70ee1bb">cl::Memory::Memory</a></div><div class="ttdeci">Memory(const cl_mem &amp;memory, bool retainObject)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03178">cl2.hpp:3178</a></div></div>
<div class="ttc" id="classcl_1_1_platform_html_a339232a64068fe7157e124b82fb4b9fa"><div class="ttname"><a href="classcl_1_1_platform.html#a339232a64068fe7157e124b82fb4b9fa">cl::Platform::Platform</a></div><div class="ttdeci">Platform(const cl_platform_id &amp;platform, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_platform_id. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02274">cl2.hpp:2274</a></div></div>
<div class="ttc" id="classcl_1_1_device_html_a9a8f38bb1636628bdb31d3a47c8cee36"><div class="ttname"><a href="classcl_1_1_device.html#a9a8f38bb1636628bdb31d3a47c8cee36">cl::Device::Device</a></div><div class="ttdeci">Device(Device &amp;&amp;dev) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02061">cl2.hpp:2061</a></div></div>
<div class="ttc" id="structcl_1_1detail_1_1_get_info_functor1_html"><div class="ttname"><a href="structcl_1_1detail_1_1_get_info_functor1.html">cl::detail::GetInfoFunctor1</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01433">cl2.hpp:1433</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_render_g_l_html_ac2f60478116d35c2a96c522205fcf932"><div class="ttname"><a href="classcl_1_1_buffer_render_g_l.html#ac2f60478116d35c2a96c522205fcf932">cl::BufferRenderGL::BufferRenderGL</a></div><div class="ttdeci">BufferRenderGL(const Context &amp;context, cl_mem_flags flags, cl_GLuint bufobj, cl_int *err=NULL)</div><div class="ttdoc">Constructs a BufferRenderGL in a specified context, from a given GL Renderbuffer. ...</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04076">cl2.hpp:4076</a></div></div>
<div class="ttc" id="classcl_1_1_image_html_a7bf98f36e2e0bd8627377cfdfc260259"><div class="ttname"><a href="classcl_1_1_image.html#a7bf98f36e2e0bd8627377cfdfc260259">cl::Image::getImageInfo</a></div><div class="ttdeci">cl_int getImageInfo(cl_image_info name, T *param) const</div><div class="ttdoc">Wrapper for clGetImageInfo(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04221">cl2.hpp:4221</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_g_l_html_a77604377be0e356aabfed15f6ea00b31"><div class="ttname"><a href="classcl_1_1_buffer_g_l.html#a77604377be0e356aabfed15f6ea00b31">cl::BufferGL::BufferGL</a></div><div class="ttdeci">BufferGL()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03999">cl2.hpp:3999</a></div></div>
<div class="ttc" id="classcl_1_1_user_event_html_a4255beef279789245d402a00830c841f"><div class="ttname"><a href="classcl_1_1_user_event.html#a4255beef279789245d402a00830c841f">cl::UserEvent::UserEvent</a></div><div class="ttdeci">UserEvent(const Context &amp;context, cl_int *err=NULL)</div><div class="ttdoc">Constructs a user event on a given context. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03109">cl2.hpp:3109</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a9c3230b644ad638973be7199e0451e46"><div class="ttname"><a href="classcl_1_1_command_queue.html#a9c3230b644ad638973be7199e0451e46">cl::CommandQueue::enqueueFillImage</a></div><div class="ttdeci">cl_int enqueueFillImage(const Image &amp;image, cl_float4 fillColor, const array&lt; size_type, 3 &gt; &amp;origin, const array&lt; size_type, 3 &gt; &amp;region, const vector&lt; Event &gt; *events=NULL, Event *event=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l07471">cl2.hpp:7471</a></div></div>
<div class="ttc" id="classcl_1_1_command_queue_html_a05ae8e9e44e9b28fc755937490535550"><div class="ttname"><a href="classcl_1_1_command_queue.html#a05ae8e9e44e9b28fc755937490535550">cl::CommandQueue::CommandQueue</a></div><div class="ttdeci">CommandQueue(QueueProperties properties, cl_int *err=NULL)</div><div class="ttdoc">Constructs a CommandQueue based on passed properties. Will return an CL_INVALID_QUEUE_PROPERTIES erro...</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l06751">cl2.hpp:6751</a></div></div>
<div class="ttc" id="classcl_1_1_pipe_html_a424845c4a7804d2e11046342c4bc93cb"><div class="ttname"><a href="classcl_1_1_pipe.html#a424845c4a7804d2e11046342c4bc93cb">cl::Pipe::getInfo</a></div><div class="ttdeci">cl_int getInfo(cl_pipe_info name, T *param) const</div><div class="ttdoc">Wrapper for clGetMemObjectInfo(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05370">cl2.hpp:5370</a></div></div>
<div class="ttc" id="classcl_1_1_image1_d_buffer_html"><div class="ttname"><a href="classcl_1_1_image1_d_buffer.html">cl::Image1DBuffer</a></div><div class="ttdoc">Image interface for 1D buffer images. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04342">cl2.hpp:4342</a></div></div>
<div class="ttc" id="classcl_1_1_program_html"><div class="ttname"><a href="classcl_1_1_program.html">cl::Program</a></div><div class="ttdoc">Program interface that implements cl_program. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05976">cl2.hpp:5976</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_g_l_html_ae4379054235116bf4e7f1107914d0ce7"><div class="ttname"><a href="classcl_1_1_image3_d_g_l.html#ae4379054235116bf4e7f1107914d0ce7">cl::Image3DGL::Image3DGL</a></div><div class="ttdeci">Image3DGL(const cl_mem &amp;image, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05128">cl2.hpp:5128</a></div></div>
<div class="ttc" id="classcl_1_1_image3_d_g_l_html_a43fbcd25852d39c83a789699921ef7aa"><div class="ttname"><a href="classcl_1_1_image3_d_g_l.html#a43fbcd25852d39c83a789699921ef7aa">cl::Image3DGL::Image3DGL</a></div><div class="ttdeci">Image3DGL(Image3DGL &amp;&amp;img) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05158">cl2.hpp:5158</a></div></div>
<div class="ttc" id="classcl_1_1detail_1_1_wrapper_html"><div class="ttname"><a href="classcl_1_1detail_1_1_wrapper.html">cl::detail::Wrapper</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l01636">cl2.hpp:1636</a></div></div>
<div class="ttc" id="classcl_1_1_platform_html_a5000dc4a51c43e9e9bf851c695cf16f2"><div class="ttname"><a href="classcl_1_1_platform.html#a5000dc4a51c43e9e9bf851c695cf16f2">cl::Platform::getInfo</a></div><div class="ttdeci">cl_int getInfo(cl_platform_info name, string *param) const</div><div class="ttdoc">Wrapper for clGetPlatformInfo(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02313">cl2.hpp:2313</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_g_l_html"><div class="ttname"><a href="classcl_1_1_buffer_g_l.html">cl::BufferGL</a></div><div class="ttdoc">Class interface for GL Buffer Memory Objects. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03971">cl2.hpp:3971</a></div></div>
<div class="ttc" id="classcl_1_1_s_v_m_allocator_html"><div class="ttname"><a href="classcl_1_1_s_v_m_allocator.html">cl::SVMAllocator</a></div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03387">cl2.hpp:3387</a></div></div>
<div class="ttc" id="classcl_1_1_device_command_queue_html_ac1cc85eaacd3a27a57b34471b41b073c"><div class="ttname"><a href="classcl_1_1_device_command_queue.html#ac1cc85eaacd3a27a57b34471b41b073c">cl::DeviceCommandQueue::DeviceCommandQueue</a></div><div class="ttdeci">DeviceCommandQueue(DeviceCommandQueue &amp;&amp;queue) CL_HPP_NOEXCEPT_</div><div class="ttdoc">Move constructor to forward move to the superclass correctly. Required for MSVC. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08363">cl2.hpp:8363</a></div></div>
<div class="ttc" id="namespacecl_html_a02c4368c6ce7a1a99132eafd5dc96fa9"><div class="ttname"><a href="namespacecl.html#a02c4368c6ce7a1a99132eafd5dc96fa9">cl::copy</a></div><div class="ttdeci">cl_int copy(const CommandQueue &amp;queue, const cl::Buffer &amp;buffer, IteratorType startIterator, IteratorType endIterator)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l08932">cl2.hpp:8932</a></div></div>
<div class="ttc" id="classcl_1_1_platform_html_afcf93176bebefc3add081c2d93935453"><div class="ttname"><a href="classcl_1_1_platform.html#afcf93176bebefc3add081c2d93935453">cl::Platform::setDefault</a></div><div class="ttdeci">static Platform setDefault(const Platform &amp;default_platform)</div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02305">cl2.hpp:2305</a></div></div>
<div class="ttc" id="classcl_1_1_image2_d_g_l_html"><div class="ttname"><a href="classcl_1_1_image2_d_g_l.html">cl::Image2DGL</a></div><div class="ttdoc">Class interface for GL 2D Image Memory objects. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04765">cl2.hpp:4765</a></div></div>
<div class="ttc" id="classcl_1_1_context_html"><div class="ttname"><a href="classcl_1_1_context.html">cl::Context</a></div><div class="ttdoc">Class interface for cl_context. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02571">cl2.hpp:2571</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_g_l_html_a7ac53f876cfdb10fdd25a40d24b36686"><div class="ttname"><a href="classcl_1_1_buffer_g_l.html#a7ac53f876cfdb10fdd25a40d24b36686">cl::BufferGL::BufferGL</a></div><div class="ttdeci">BufferGL(const Context &amp;context, cl_mem_flags flags, cl_GLuint bufobj, cl_int *err=NULL)</div><div class="ttdoc">Constructs a BufferGL in a specified context, from a given GL buffer. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03979">cl2.hpp:3979</a></div></div>
<div class="ttc" id="classcl_1_1_platform_html_a616344e02c3723347c752c02b7015212"><div class="ttname"><a href="classcl_1_1_platform.html#a616344e02c3723347c752c02b7015212">cl::Platform::Platform</a></div><div class="ttdeci">Platform()</div><div class="ttdoc">Default constructor - initializes to NULL. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l02265">cl2.hpp:2265</a></div></div>
<div class="ttc" id="classcl_1_1_memory_html_aa6cd4c07a111c6baa3195bee2a447dad"><div class="ttname"><a href="classcl_1_1_memory.html#aa6cd4c07a111c6baa3195bee2a447dad">cl::Memory::operator=</a></div><div class="ttdeci">Memory &amp; operator=(const cl_mem &amp;rhs)</div><div class="ttdoc">Assignment operator from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03186">cl2.hpp:3186</a></div></div>
<div class="ttc" id="classcl_1_1_n_d_range_html_ad197ecf968b6dce338137909827cb66f"><div class="ttname"><a href="classcl_1_1_n_d_range.html#ad197ecf968b6dce338137909827cb66f">cl::NDRange::size</a></div><div class="ttdeci">size_type size() const</div><div class="ttdoc">Returns the size of the object in bytes based on the. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l05590">cl2.hpp:5590</a></div></div>
<div class="ttc" id="classcl_1_1_buffer_g_l_html_ae70de3a74671b3a93e05279a8185cd7a"><div class="ttname"><a href="classcl_1_1_buffer_g_l.html#ae70de3a74671b3a93e05279a8185cd7a">cl::BufferGL::BufferGL</a></div><div class="ttdeci">BufferGL(const cl_mem &amp;buffer, bool retainObject=false)</div><div class="ttdoc">Constructor from cl_mem - takes ownership. </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l04008">cl2.hpp:4008</a></div></div>
<div class="ttc" id="classcl_1_1_memory_html_ab86d24b2a4f9a7090148fb8e77d73135"><div class="ttname"><a href="classcl_1_1_memory.html#ab86d24b2a4f9a7090148fb8e77d73135">cl::Memory::getInfo</a></div><div class="ttdeci">cl_int getInfo(cl_mem_info name, T *param) const</div><div class="ttdoc">Wrapper for clGetMemObjectInfo(). </div><div class="ttdef"><b>Definition:</b> <a href="cl2_8hpp_source.html#l03223">cl2.hpp:3223</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_8358e9aed72341d13c81ba12a462bec7.html">CL</a></li><li class="navelem"><a class="el" href="cl2_8hpp.html">cl2.hpp</a></li>
    <li class="footer">Generated on Thu Jan 25 2018 01:39:34 for OpenCL C++ Bindings by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>