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_NESTED_FUNCS_HPP 00019 #define ARBB_CPP_NESTED_FUNCS_HPP 00020 00021 #include "namespace.hpp" 00022 #include "scalar.hpp" 00023 #include "nested.hpp" 00024 00025 namespace ARBB_CPP_NS { 00026 00029 00047 template <typename T> 00048 nested<T> repeat(const nested<T> & src, const usize& times, 00049 const boolean collate = true, 00050 const usize& level = usize(0)); 00051 00067 template <typename T> 00068 nested<T> repeat(const nested<T> & src, const nested<usize>& times, 00069 const usize& level = usize(0)); 00070 00085 template <typename T> 00086 nested<T> shuffle(const nested<T>& src1, const nested<T>& src2, 00087 const usize& grain, 00088 const usize& level = usize(0)); 00089 00101 template <typename T> 00102 nested<T> unshuffle(const nested<T>& src, const usize& grain, 00103 const usize& level = usize(0)); 00104 00107 template <typename T> 00108 nested<T> reshape_nested_lengths(const dense<T, 1>& data, 00109 const dense<usize, 1>& lengths); 00110 00113 template <typename T, typename U> 00114 nested<T> reshape_as(const dense<T, 1>& data, const nested<U>& reference); 00115 00127 template <typename T> 00128 nested<T> split(const dense<T, 1>& source, const dense<isize, 1>& tristate); 00129 00133 template <typename T> 00134 nested<T> split(const nested<T>& src, const nested<isize>& tristate); 00135 00138 template <typename T> 00139 dense<T, 1> unsplit(const nested<T>& src, const dense<isize, 1>& tristate); 00140 00143 template <typename T> 00144 nested<T> unsplit(const nested<T>& src, const nested<isize>& tristate); 00145 00155 template <typename T> 00156 nested<T> cat(const nested<T>& src1, const nested<T>& src2); 00157 00160 template <typename T> 00161 nested<T> replace_segment(const nested<T>& src, const usize& i, const dense<T, 1>& value); 00162 00166 template <typename T> 00167 nested<T> replace(const nested<T>& src, const usize& segment, const usize& element, const T& value); 00168 00171 template <typename T> 00172 nested<T> unpack(const nested<T>& src, const nested<boolean>& mask, const T& value); 00173 00176 template <typename T> 00177 nested<T> unpack(const nested<T>& src, const nested<boolean>& mask, const typename uncaptured<T>::type value); 00178 00182 template <typename T> 00183 nested<T> reshape_nested_offsets(const dense<T, 1>& src, const dense<usize, 1>& segs); 00184 00188 template <typename T> 00189 nested<T> reshape_nested_flags(const dense<T, 1>& src, const dense<boolean, 1>& flags); 00190 00192 00193 } // namespace ARBB_CPP_NS 00194 00195 #endif // ARBB_CPP_NESTED_FUNCS_HPP
Copyright © 2010, Intel Corporation. All rights reserved.