00001 /**** 00002 ***** Copyright 2010 Intel Corporation All Rights Reserved. 00003 ***** 00004 ***** The source code, information and material contained herein are owned by Intel Corporation or its suppliers ***** 00005 ***** or licensors, and title to such Material remains with Intel Corporation or its suppliers or licensors. ***** 00006 ***** The Material contains proprietary information of Intel or its suppliers and licensors. The Material is ***** 00007 ***** protected by worldwide copyright laws and treaty provisions. No part of the Material may be used, copied, ***** 00008 ***** reproduced, modified, published, uploaded, posted, transmitted, distributed or disclosed in any way without ***** 00009 ***** Intel's prior express written permission. 00010 ***** 00011 ***** No license under any patent, copyright or other intellectual property rights in the material is granted to ***** 00012 ***** or conferred upon you, either expressly, by implication, inducement, estoppel or otherwise. Any license ***** 00013 ***** under such intellectual property rights must be express and approved by Intel in writing. 00014 ****/ 00015 00016 /**** Copyright Ends ****/ 00017 00018 #ifndef ARBB_CPP_BIND_DENSE_HPP 00019 #define ARBB_CPP_BIND_DENSE_HPP 00020 00021 #include "namespace.hpp" 00022 #include "type_traits.hpp" 00023 #include "dense.hpp" 00024 #include "scalar.hpp" 00025 #include "array.hpp" 00026 #include "detail/enable_if.hpp" 00027 #include "detail/scalar_traits.hpp" 00028 00029 namespace ARBB_CPP_NS { 00030 00033 00046 template <typename T, std::size_t D> 00047 typename detail::enable_if<detail::is_scalar<T>::value>::type 00048 bind(dense<T, D>& container, typename uncaptured<T>::type* data, const array<std::size_t, D>& size); 00049 00064 template <typename T, std::size_t D> 00065 typename detail::enable_if<detail::is_scalar<T>::value>::type 00066 bind(dense<T, D>& container, typename uncaptured<T>::type* data, const array<std::size_t, D>& size, const array<std::size_t, D>& pitch); 00067 00070 template <typename T> 00071 typename detail::enable_if<detail::is_scalar<T>::value>::type 00072 bind(dense<T>& container, typename uncaptured<T>::type* data, std::size_t size); 00073 00076 template <typename T> 00077 typename detail::enable_if<detail::is_scalar<T>::value>::type 00078 bind(dense<T, 2>& container, typename uncaptured<T>::type* data, std::size_t width, std::size_t height); 00079 00082 template <typename T> 00083 typename detail::enable_if<detail::is_scalar<T>::value>::type 00084 bind(dense<T, 3>& container, typename uncaptured<T>::type* data, std::size_t width, std::size_t height, std::size_t depth); 00085 00088 template <typename T> 00089 typename detail::enable_if<detail::is_scalar<T>::value>::type 00090 bind(dense<T>& container, typename uncaptured<T>::type* data, std::size_t size, std::size_t pitch); 00091 00094 template <typename T> 00095 typename detail::enable_if<detail::is_scalar<T>::value>::type 00096 bind(dense<T, 2>& container, typename uncaptured<T>::type* data, std::size_t width, std::size_t height, std::size_t col_pitch, std::size_t row_pitch); 00097 00100 template <typename T> 00101 typename detail::enable_if<detail::is_scalar<T>::value>::type 00102 bind(dense<T, 3>& container, typename uncaptured<T>::type* data, std::size_t width, std::size_t height, std::size_t depth, std::size_t col_pitch, std::size_t row_pitch, std::size_t page_pitch); 00103 00125 template <typename T, std::size_t D> 00126 typename detail::disable_if<detail::is_scalar<T>::value>::type 00127 bind(dense<T, D>& container, const array<std::size_t, D>& size, void* member1_data, ...); 00128 00150 template <typename T> 00151 typename detail::disable_if<detail::is_scalar<T>::value>::type 00152 bind(dense<T, 1>& container, const array<std::size_t, 1>& size, void* member1_data, array<std::size_t, 1> pitch1, ...); 00153 00175 template <typename T> 00176 typename detail::disable_if<detail::is_scalar<T>::value>::type 00177 bind(dense<T, 2>& container, const array<std::size_t, 2>& size, void* member1_data, array<std::size_t, 2> pitch1, ...); 00178 00200 template <typename T> 00201 typename detail::disable_if<detail::is_scalar<T>::value>::type 00202 bind(dense<T, 3>& container, const array<std::size_t, 3>& size, void* member1_data, array<std::size_t, 3> pitch1, ...); 00203 00204 00207 template <typename T> 00208 typename detail::disable_if<detail::is_scalar<T>::value>::type 00209 bind(dense<T>& container, std::size_t size, void* member1_data, ...); 00210 00213 template <typename T> 00214 typename detail::disable_if<detail::is_scalar<T>::value>::type 00215 bind(dense<T, 2>& container, std::size_t width, std::size_t height, void* member1_data, ...); 00216 00219 template <typename T> 00220 typename detail::disable_if<detail::is_scalar<T>::value>::type 00221 bind(dense<T, 3>& container, std::size_t width, std::size_t height, std::size_t depth, void* member1_data, ...); 00222 00225 template <typename T> 00226 typename detail::disable_if<detail::is_scalar<T>::value>::type 00227 bind(dense<T>& container, std::size_t size, void* member1_data, std::size_t pitch1, ...); 00228 00231 template <typename T> 00232 typename detail::disable_if<detail::is_scalar<T>::value>::type 00233 bind(dense<T, 2>& container, std::size_t width, std::size_t height, void* member1_data, std::size_t col_pitch1, std::size_t row_pitch1, ...); 00234 00237 template <typename T> 00238 typename detail::disable_if<detail::is_scalar<T>::value>::type 00239 bind(dense<T, 3>& container, std::size_t width, std::size_t height, std::size_t depth, void* member1_data, std::size_t col_pitch1, std::size_t row_pitch1, std::size_t page_pitch1, ...); 00240 00241 00255 template <typename T, std::size_t D, std::size_t N> 00256 typename detail::enable_if<detail::is_scalar<T>::value>::type 00257 bind(dense<array<T, N>, D>& container, typename uncaptured<T>::type* data, const array<std::size_t, D>& size); 00258 00276 template <typename T, std::size_t D, std::size_t N> 00277 typename detail::enable_if<detail::is_scalar<T>::value>::type 00278 bind(dense<array<T, N>, D>& container, typename uncaptured<T>::type* data, const array<std::size_t, D>& size, const array<std::size_t, D>& record_pitch, std::size_t element_pitch); 00279 00282 template <typename T, std::size_t N> 00283 typename detail::enable_if<detail::is_scalar<T>::value>::type 00284 bind(dense<array<T, N>, 1>& container, typename uncaptured<T>::type* data, std::size_t size); 00285 00288 template <typename T, std::size_t N> 00289 typename detail::enable_if<detail::is_scalar<T>::value>::type 00290 bind(dense<array<T, N>, 2>& container, typename uncaptured<T>::type* data, std::size_t width, std::size_t height); 00291 00294 template <typename T, std::size_t N> 00295 typename detail::enable_if<detail::is_scalar<T>::value>::type 00296 bind(dense<array<T, N>, 3>& container, typename uncaptured<T>::type* data, std::size_t width, std::size_t height, std::size_t depth); 00297 00300 template <typename T, std::size_t N> 00301 typename detail::enable_if<detail::is_scalar<T>::value>::type 00302 bind(dense<array<T, N>, 1>& container, typename uncaptured<T>::type* data, std::size_t size, std::size_t record_pitch, std::size_t element_pitch); 00303 00306 template <typename T, std::size_t N> 00307 typename detail::enable_if<detail::is_scalar<T>::value>::type 00308 bind(dense<array<T, N>, 2>& container, typename uncaptured<T>::type* data, std::size_t width, std::size_t height, std::size_t col_pitch, std::size_t row_pitch, std::size_t element_pitch); 00309 00312 template <typename T, std::size_t N> 00313 typename detail::enable_if<detail::is_scalar<T>::value>::type 00314 bind(dense<array<T, N>, 3>& container, typename uncaptured<T>::type* data, std::size_t width, std::size_t height, std::size_t depth, std::size_t col_pitch, std::size_t row_pitch, std::size_t page_pitch, std::size_t element_pitch); 00315 00317 00318 } // namespace ARBB_CPP_NS 00319 00320 #endif // ARBB_CPP_BIND_DENSE_HPP
Copyright © 2010, Intel Corporation. All rights reserved.