1*58b9f456SAndroid Build Coastguard Worker //===------------------------ valarray.cpp --------------------------------===// 2*58b9f456SAndroid Build Coastguard Worker // 3*58b9f456SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*58b9f456SAndroid Build Coastguard Worker // 5*58b9f456SAndroid Build Coastguard Worker // This file is dual licensed under the MIT and the University of Illinois Open 6*58b9f456SAndroid Build Coastguard Worker // Source Licenses. See LICENSE.TXT for details. 7*58b9f456SAndroid Build Coastguard Worker // 8*58b9f456SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*58b9f456SAndroid Build Coastguard Worker 10*58b9f456SAndroid Build Coastguard Worker #include "valarray" 11*58b9f456SAndroid Build Coastguard Worker 12*58b9f456SAndroid Build Coastguard Worker _LIBCPP_BEGIN_NAMESPACE_STD 13*58b9f456SAndroid Build Coastguard Worker 14*58b9f456SAndroid Build Coastguard Worker template valarray<size_t>::valarray(size_t); 15*58b9f456SAndroid Build Coastguard Worker template valarray<size_t>::~valarray(); 16*58b9f456SAndroid Build Coastguard Worker template void valarray<size_t>::resize(size_t, size_t); 17*58b9f456SAndroid Build Coastguard Worker 18*58b9f456SAndroid Build Coastguard Worker void __init(size_t __start)19*58b9f456SAndroid Build Coastguard Workergslice::__init(size_t __start) 20*58b9f456SAndroid Build Coastguard Worker { 21*58b9f456SAndroid Build Coastguard Worker valarray<size_t> __indices(__size_.size()); 22*58b9f456SAndroid Build Coastguard Worker size_t __k = __size_.size() != 0; 23*58b9f456SAndroid Build Coastguard Worker for (size_t __i = 0; __i < __size_.size(); ++__i) 24*58b9f456SAndroid Build Coastguard Worker __k *= __size_[__i]; 25*58b9f456SAndroid Build Coastguard Worker __1d_.resize(__k); 26*58b9f456SAndroid Build Coastguard Worker if (__1d_.size()) 27*58b9f456SAndroid Build Coastguard Worker { 28*58b9f456SAndroid Build Coastguard Worker __k = 0; 29*58b9f456SAndroid Build Coastguard Worker __1d_[__k] = __start; 30*58b9f456SAndroid Build Coastguard Worker while (true) 31*58b9f456SAndroid Build Coastguard Worker { 32*58b9f456SAndroid Build Coastguard Worker size_t __i = __indices.size() - 1; 33*58b9f456SAndroid Build Coastguard Worker while (true) 34*58b9f456SAndroid Build Coastguard Worker { 35*58b9f456SAndroid Build Coastguard Worker if (++__indices[__i] < __size_[__i]) 36*58b9f456SAndroid Build Coastguard Worker { 37*58b9f456SAndroid Build Coastguard Worker ++__k; 38*58b9f456SAndroid Build Coastguard Worker __1d_[__k] = __1d_[__k-1] + __stride_[__i]; 39*58b9f456SAndroid Build Coastguard Worker for (size_t __j = __i + 1; __j != __indices.size(); ++__j) 40*58b9f456SAndroid Build Coastguard Worker __1d_[__k] -= __stride_[__j] * (__size_[__j] - 1); 41*58b9f456SAndroid Build Coastguard Worker break; 42*58b9f456SAndroid Build Coastguard Worker } 43*58b9f456SAndroid Build Coastguard Worker else 44*58b9f456SAndroid Build Coastguard Worker { 45*58b9f456SAndroid Build Coastguard Worker if (__i == 0) 46*58b9f456SAndroid Build Coastguard Worker return; 47*58b9f456SAndroid Build Coastguard Worker __indices[__i--] = 0; 48*58b9f456SAndroid Build Coastguard Worker } 49*58b9f456SAndroid Build Coastguard Worker } 50*58b9f456SAndroid Build Coastguard Worker } 51*58b9f456SAndroid Build Coastguard Worker } 52*58b9f456SAndroid Build Coastguard Worker } 53*58b9f456SAndroid Build Coastguard Worker 54*58b9f456SAndroid Build Coastguard Worker _LIBCPP_END_NAMESPACE_STD 55