Where Online Learning is simpler!
The C and C++ Include Header Files
/usr/include/c++/13/bits/valarray_array.tcc
$ cat -n /usr/include/c++/13/bits/valarray_array.tcc 1 // The template and inlines for the -*- C++ -*- internal _Array helper class. 2 3 // Copyright (C) 1997-2023 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 3, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // Under Section 7 of GPL version 3, you are granted additional 17 // permissions described in the GCC Runtime Library Exception, version 18 // 3.1, as published by the Free Software Foundation. 19 20 // You should have received a copy of the GNU General Public License and 21 // a copy of the GCC Runtime Library Exception along with this program; 22 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23 //
. 24 25 /** @file bits/valarray_array.tcc 26 * This is an internal header file, included by other library headers. 27 * Do not attempt to use it directly. @headername{valarray} 28 */ 29 30 // Written by Gabriel Dos Reis
31 32 #ifndef _VALARRAY_ARRAY_TCC 33 #define _VALARRAY_ARRAY_TCC 1 34 35 namespace std _GLIBCXX_VISIBILITY(default) 36 { 37 _GLIBCXX_BEGIN_NAMESPACE_VERSION 38 39 template
40 void 41 __valarray_fill(_Array<_Tp> __a, size_t __n, _Array
__m, 42 const _Tp& __t) 43 { 44 _Tp* __p = __a._M_data; 45 bool* __ok (__m._M_data); 46 for (size_t __i=0; __i < __n; ++__i, ++__ok, ++__p) 47 { 48 while (!*__ok) 49 { 50 ++__ok; 51 ++__p; 52 } 53 *__p = __t; 54 } 55 } 56 57 // Copy n elements of a into consecutive elements of b. When m is 58 // false, the corresponding element of a is skipped. m must contain 59 // at least n true elements. a must contain at least n elements and 60 // enough elements to match up with m through the nth true element 61 // of m. I.e. if n is 10, m has 15 elements with 5 false followed 62 // by 10 true, a must have 15 elements. 63 template
64 void 65 __valarray_copy(_Array<_Tp> __a, _Array
__m, _Array<_Tp> __b, 66 size_t __n) 67 { 68 _Tp* __p (__a._M_data); 69 bool* __ok (__m._M_data); 70 for (_Tp* __q = __b._M_data; __q < __b._M_data + __n; 71 ++__q, ++__ok, ++__p) 72 { 73 while (! *__ok) 74 { 75 ++__ok; 76 ++__p; 77 } 78 *__q = *__p; 79 } 80 } 81 82 // Copy n consecutive elements from a into elements of b. Elements 83 // of b are skipped if the corresponding element of m is false. m 84 // must contain at least n true elements. b must have at least as 85 // many elements as the index of the nth true element of m. I.e. if 86 // m has 15 elements with 5 false followed by 10 true, b must have 87 // at least 15 elements. 88 template
89 void 90 __valarray_copy(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b, 91 _Array
__m) 92 { 93 _Tp* __q (__b._M_data); 94 bool* __ok (__m._M_data); 95 for (_Tp* __p = __a._M_data; __p < __a._M_data+__n; 96 ++__p, ++__ok, ++__q) 97 { 98 while (! *__ok) 99 { 100 ++__ok; 101 ++__q; 102 } 103 *__q = *__p; 104 } 105 } 106 107 // Copy n elements from a into elements of b. Elements of a are 108 // skipped if the corresponding element of m is false. Elements of 109 // b are skipped if the corresponding element of k is false. m and 110 // k must contain at least n true elements. a and b must have at 111 // least as many elements as the index of the nth true element of m. 112 template
113 void 114 __valarray_copy(_Array<_Tp> __a, _Array
__m, size_t __n, 115 _Array<_Tp> __b, _Array
__k) 116 { 117 _Tp* __p (__a._M_data); 118 _Tp* __q (__b._M_data); 119 bool* __srcok (__m._M_data); 120 bool* __dstok (__k._M_data); 121 for (size_t __i = 0; __i < __n; 122 ++__srcok, ++__p, ++__dstok, ++__q, ++__i) 123 { 124 while (! *__srcok) 125 { 126 ++__srcok; 127 ++__p; 128 } 129 while (! *__dstok) 130 { 131 ++__dstok; 132 ++__q; 133 } 134 *__q = *__p; 135 } 136 } 137 138 // Copy n consecutive elements of e into consecutive elements of a. 139 // I.e. a[i] = e[i]. 140 template
141 void 142 __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n, _Array<_Tp> __a) 143 { 144 _Tp* __p (__a._M_data); 145 for (size_t __i = 0; __i < __n; ++__i, ++__p) 146 *__p = __e[__i]; 147 } 148 149 // Copy n consecutive elements of e into elements of a using stride 150 // s. I.e., a[0] = e[0], a[s] = e[1], a[2*s] = e[2]. 151 template
152 void 153 __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n, 154 _Array<_Tp> __a, size_t __s) 155 { 156 _Tp* __p (__a._M_data); 157 for (size_t __i = 0; __i < __n; ++__i, __p += __s) 158 *__p = __e[__i]; 159 } 160 161 // Copy n consecutive elements of e into elements of a indexed by 162 // contents of i. I.e., a[i[0]] = e[0]. 163 template
164 void 165 __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n, 166 _Array<_Tp> __a, _Array
__i) 167 { 168 size_t* __j (__i._M_data); 169 for (size_t __k = 0; __k < __n; ++__k, ++__j) 170 __a._M_data[*__j] = __e[__k]; 171 } 172 173 // Copy n elements of e indexed by contents of f into elements of a 174 // indexed by contents of i. I.e., a[i[0]] = e[f[0]]. 175 template
176 void 177 __valarray_copy(_Array<_Tp> __e, _Array
__f, 178 size_t __n, 179 _Array<_Tp> __a, _Array
__i) 180 { 181 size_t* __g (__f._M_data); 182 size_t* __j (__i._M_data); 183 for (size_t __k = 0; __k < __n; ++__k, ++__j, ++__g) 184 __a._M_data[*__j] = __e._M_data[*__g]; 185 } 186 187 // Copy n consecutive elements of e into elements of a. Elements of 188 // a are skipped if the corresponding element of m is false. m must 189 // have at least n true elements and a must have at least as many 190 // elements as the index of the nth true element of m. I.e. if m 191 // has 5 false followed by 10 true elements and n == 10, a must have 192 // at least 15 elements. 193 template
194 void 195 __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n, 196 _Array<_Tp> __a, _Array
__m) 197 { 198 bool* __ok (__m._M_data); 199 _Tp* __p (__a._M_data); 200 for (size_t __i = 0; __i < __n; ++__i, ++__ok, ++__p) 201 { 202 while (! *__ok) 203 { 204 ++__ok; 205 ++__p; 206 } 207 *__p = __e[__i]; 208 } 209 } 210 211 212 template
213 void 214 __valarray_copy_construct(const _Expr<_Dom, _Tp>& __e, size_t __n, 215 _Array<_Tp> __a) 216 { 217 _Tp* __p (__a._M_data); 218 for (size_t __i = 0; __i < __n; ++__i, ++__p) 219 new (__p) _Tp(__e[__i]); 220 } 221 222 223 template
224 void 225 __valarray_copy_construct(_Array<_Tp> __a, _Array
__m, 226 _Array<_Tp> __b, size_t __n) 227 { 228 _Tp* __p (__a._M_data); 229 bool* __ok (__m._M_data); 230 for (_Tp* __q = __b._M_data; __q < __b._M_data+__n; ++__q, ++__ok, ++__p) 231 { 232 while (! *__ok) 233 { 234 ++__ok; 235 ++__p; 236 } 237 new (__q) _Tp(*__p); 238 } 239 } 240 241 _GLIBCXX_END_NAMESPACE_VERSION 242 } // namespace 243 244 #endif /* _VALARRAY_ARRAY_TCC */
Contact us
|
About us
|
Term of use
|
Copyright © 2000-2025 MyWebUniversity.com ™