1227825Stheraven//===------------------------ valarray.cpp --------------------------------===// 2227825Stheraven// 3227825Stheraven// The LLVM Compiler Infrastructure 4227825Stheraven// 5227825Stheraven// This file is dual licensed under the MIT and the University of Illinois Open 6227825Stheraven// Source Licenses. See LICENSE.TXT for details. 7227825Stheraven// 8227825Stheraven//===----------------------------------------------------------------------===// 9227825Stheraven 10227825Stheraven#include "valarray" 11227825Stheraven 12227825Stheraven_LIBCPP_BEGIN_NAMESPACE_STD 13227825Stheraven 14227825Stheraventemplate valarray<size_t>::valarray(size_t); 15227825Stheraventemplate valarray<size_t>::~valarray(); 16227825Stheraventemplate void valarray<size_t>::resize(size_t, size_t); 17227825Stheraven 18227825Stheravenvoid 19227825Stheravengslice::__init(size_t __start) 20227825Stheraven{ 21227825Stheraven valarray<size_t> __indices(__size_.size()); 22227825Stheraven size_t __k = __size_.size() != 0; 23227825Stheraven for (size_t __i = 0; __i < __size_.size(); ++__i) 24227825Stheraven __k *= __size_[__i]; 25227825Stheraven __1d_.resize(__k); 26227825Stheraven if (__1d_.size()) 27227825Stheraven { 28227825Stheraven __k = 0; 29227825Stheraven __1d_[__k] = __start; 30227825Stheraven while (true) 31227825Stheraven { 32227825Stheraven size_t __i = __indices.size() - 1; 33227825Stheraven while (true) 34227825Stheraven { 35227825Stheraven if (++__indices[__i] < __size_[__i]) 36227825Stheraven { 37227825Stheraven ++__k; 38227825Stheraven __1d_[__k] = __1d_[__k-1] + __stride_[__i]; 39227825Stheraven for (size_t __j = __i + 1; __j != __indices.size(); ++__j) 40227825Stheraven __1d_[__k] -= __stride_[__j] * (__size_[__j] - 1); 41227825Stheraven break; 42227825Stheraven } 43227825Stheraven else 44227825Stheraven { 45227825Stheraven if (__i == 0) 46227825Stheraven return; 47227825Stheraven __indices[__i--] = 0; 48227825Stheraven } 49227825Stheraven } 50227825Stheraven } 51227825Stheraven } 52227825Stheraven} 53227825Stheraven 54227825Stheraven_LIBCPP_END_NAMESPACE_STD 55