gslcpp
Modern-C++ Wrapper for GSL
ptr.hpp
Go to the documentation of this file.
1 /// \file include/gslcpp/wrap/ptr.hpp
2 /// \copyright 2022 Thomas E. Vaughan, all rights reserved.
3 /// \brief Definition of gsl::w_ptr().
4 
5 #pragma once
6 #include "container.hpp" // w_vector
7 
8 namespace gsl {
9 
10 
11 /// Pointer to `i`th element of vector `v`, with bounds-checking.
12 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
13 /// @param v Pointer to vector.
14 /// @param i Offset of element in vector.
15 /// @return Pointer to element at offset `i` in `v`.
16 inline auto *w_ptr(w_vector<double> *v, size_t i) {
17  return gsl_vector_ptr(v, i);
18 }
19 
20 
21 /// Pointer to `i`th element of vector `v`, with bounds-checking.
22 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
23 /// @param v Pointer to vector.
24 /// @param i Offset of element in vector.
25 /// @return Pointer to element at offset `i` in `v`.
26 inline auto const *w_ptr(w_vector<double const> *v, size_t i) {
27  return gsl_vector_const_ptr(v, i);
28 }
29 
30 
31 /// Pointer to `i`th element of vector `v`, with bounds-checking.
32 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
33 /// @param v Pointer to vector.
34 /// @param i Offset of element in vector.
35 /// @return Pointer to element at offset `i` in `v`.
36 inline auto *w_ptr(w_vector<float> *v, size_t i) {
37  return gsl_vector_float_ptr(v, i);
38 }
39 
40 
41 /// Pointer to `i`th element of vector `v`, with bounds-checking.
42 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
43 /// @param v Pointer to vector.
44 /// @param i Offset of element in vector.
45 /// @return Pointer to element at offset `i` in `v`.
46 inline auto const *w_ptr(w_vector<float const> *v, size_t i) {
47  return gsl_vector_float_const_ptr(v, i);
48 }
49 
50 
51 /// Pointer to `i`th element of vector `v`, with bounds-checking.
52 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
53 /// @param v Pointer to vector.
54 /// @param i Offset of element in vector.
55 /// @return Pointer to element at offset `i` in `v`.
56 inline auto *w_ptr(w_vector<long double> *v, size_t i) {
57  return gsl_vector_long_double_ptr(v, i);
58 }
59 
60 
61 /// Pointer to `i`th element of vector `v`, with bounds-checking.
62 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
63 /// @param v Pointer to vector.
64 /// @param i Offset of element in vector.
65 /// @return Pointer to element at offset `i` in `v`.
66 inline auto const *w_ptr(w_vector<long double const> *v, size_t i) {
67  return gsl_vector_long_double_const_ptr(v, i);
68 }
69 
70 
71 /// Pointer to `i`th element of vector `v`, with bounds-checking.
72 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
73 /// @param v Pointer to vector.
74 /// @param i Offset of element in vector.
75 /// @return Pointer to element at offset `i` in `v`.
76 inline auto *w_ptr(w_vector<int> *v, size_t i) {
77  return gsl_vector_int_ptr(v, i);
78 }
79 
80 
81 /// Pointer to `i`th element of vector `v`, with bounds-checking.
82 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
83 /// @param v Pointer to vector.
84 /// @param i Offset of element in vector.
85 /// @return Pointer to element at offset `i` in `v`.
86 inline auto const *w_ptr(w_vector<int const> *v, size_t i) {
87  return gsl_vector_int_const_ptr(v, i);
88 }
89 
90 
91 /// Pointer to `i`th element of vector `v`, with bounds-checking.
92 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
93 /// @param v Pointer to vector.
94 /// @param i Offset of element in vector.
95 /// @return Pointer to element at offset `i` in `v`.
96 inline auto *w_ptr(w_vector<unsigned> *v, size_t i) {
97  return gsl_vector_uint_ptr(v, i);
98 }
99 
100 
101 /// Pointer to `i`th element of vector `v`, with bounds-checking.
102 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
103 /// @param v Pointer to vector.
104 /// @param i Offset of element in vector.
105 /// @return Pointer to element at offset `i` in `v`.
106 inline auto const *w_ptr(w_vector<unsigned const> *v, size_t i) {
107  return gsl_vector_uint_const_ptr(v, i);
108 }
109 
110 
111 /// Pointer to `i`th element of vector `v`, with bounds-checking.
112 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
113 /// @param v Pointer to vector.
114 /// @param i Offset of element in vector.
115 /// @return Pointer to element at offset `i` in `v`.
116 inline auto *w_ptr(w_vector<long> *v, size_t i) {
117  return gsl_vector_long_ptr(v, i);
118 }
119 
120 
121 /// Pointer to `i`th element of vector `v`, with bounds-checking.
122 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
123 /// @param v Pointer to vector.
124 /// @param i Offset of element in vector.
125 /// @return Pointer to element at offset `i` in `v`.
126 inline auto const *w_ptr(w_vector<long const> *v, size_t i) {
127  return gsl_vector_long_const_ptr(v, i);
128 }
129 
130 
131 /// Pointer to `i`th element of vector `v`, with bounds-checking.
132 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
133 /// @param v Pointer to vector.
134 /// @param i Offset of element in vector.
135 /// @return Pointer to element at offset `i` in `v`.
136 inline auto *w_ptr(w_vector<unsigned long> *v, size_t i) {
137  return gsl_vector_ulong_ptr(v, i);
138 }
139 
140 
141 /// Pointer to `i`th element of vector `v`, with bounds-checking.
142 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
143 /// @param v Pointer to vector.
144 /// @param i Offset of element in vector.
145 /// @return Pointer to element at offset `i` in `v`.
146 inline auto const *w_ptr(w_vector<unsigned long const> *v, size_t i) {
147  return gsl_vector_ulong_const_ptr(v, i);
148 }
149 
150 
151 /// Pointer to `i`th element of vector `v`, with bounds-checking.
152 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
153 /// @param v Pointer to vector.
154 /// @param i Offset of element in vector.
155 /// @return Pointer to element at offset `i` in `v`.
156 inline auto *w_ptr(w_vector<short> *v, size_t i) {
157  return gsl_vector_short_ptr(v, i);
158 }
159 
160 
161 /// Pointer to `i`th element of vector `v`, with bounds-checking.
162 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
163 /// @param v Pointer to vector.
164 /// @param i Offset of element in vector.
165 /// @return Pointer to element at offset `i` in `v`.
166 inline auto const *w_ptr(w_vector<short const> *v, size_t i) {
167  return gsl_vector_short_const_ptr(v, i);
168 }
169 
170 
171 /// Pointer to `i`th element of vector `v`, with bounds-checking.
172 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
173 /// @param v Pointer to vector.
174 /// @param i Offset of element in vector.
175 /// @return Pointer to element at offset `i` in `v`.
176 inline auto *w_ptr(w_vector<unsigned short> *v, size_t i) {
177  return gsl_vector_ushort_ptr(v, i);
178 }
179 
180 
181 /// Pointer to `i`th element of vector `v`, with bounds-checking.
182 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
183 /// @param v Pointer to vector.
184 /// @param i Offset of element in vector.
185 /// @return Pointer to element at offset `i` in `v`.
186 inline unsigned short const *
187 w_ptr(w_vector<unsigned short const> *v, size_t i) {
188  return gsl_vector_ushort_const_ptr(v, i);
189 }
190 
191 
192 /// Pointer to `i`th element of vector `v`, with bounds-checking.
193 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
194 /// @param v Pointer to vector.
195 /// @param i Offset of element in vector.
196 /// @return Pointer to element at offset `i` in `v`.
197 inline auto *w_ptr(w_vector<char> *v, size_t i) {
198  return gsl_vector_char_ptr(v, i);
199 }
200 
201 
202 /// Pointer to `i`th element of vector `v`, with bounds-checking.
203 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
204 /// @param v Pointer to vector.
205 /// @param i Offset of element in vector.
206 /// @return Pointer to element at offset `i` in `v`.
207 inline auto const *w_ptr(w_vector<char const> *v, size_t i) {
208  return gsl_vector_char_const_ptr(v, i);
209 }
210 
211 
212 /// Pointer to `i`th element of vector `v`, with bounds-checking.
213 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
214 /// @param v Pointer to vector.
215 /// @param i Offset of element in vector.
216 /// @return Pointer to element at offset `i` in `v`.
217 inline auto *w_ptr(w_vector<unsigned char> *v, size_t i) {
218  return gsl_vector_uchar_ptr(v, i);
219 }
220 
221 
222 /// Pointer to `i`th element of vector `v`, with bounds-checking.
223 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
224 /// @param v Pointer to vector.
225 /// @param i Offset of element in vector.
226 /// @return Pointer to element at offset `i` in `v`.
227 inline auto const *w_ptr(w_vector<unsigned char const> *v, size_t i) {
228  return gsl_vector_uchar_const_ptr(v, i);
229 }
230 
231 
232 /// Pointer to `i`th element of vector `v`, with bounds-checking.
233 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
234 /// @param v Pointer to vector.
235 /// @param i Offset of element in vector.
236 /// @return Pointer to element at offset `i` in `v`.
237 inline auto *w_ptr(w_vector<complex<double>> *v, size_t i) {
238  return (complex<double> *)gsl_vector_complex_ptr(v, i);
239 }
240 
241 
242 /// Pointer to `i`th element of vector `v`, with bounds-checking.
243 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
244 /// @param v Pointer to vector.
245 /// @param i Offset of element in vector.
246 /// @return Pointer to element at offset `i` in `v`.
247 inline auto const *w_ptr(w_vector<complex<double> const> *v, size_t i) {
248  return (complex<double> const *)gsl_vector_complex_const_ptr(v, i);
249 }
250 
251 
252 /// Pointer to `i`th element of vector `v`, with bounds-checking.
253 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
254 /// @param v Pointer to vector.
255 /// @param i Offset of element in vector.
256 /// @return Pointer to element at offset `i` in `v`.
257 inline auto *w_ptr(w_vector<complex<float>> *v, size_t i) {
258  return (complex<float> *)gsl_vector_complex_float_ptr(v, i);
259 }
260 
261 
262 /// Pointer to `i`th element of vector `v`, with bounds-checking.
263 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
264 /// @param v Pointer to vector.
265 /// @param i Offset of element in vector.
266 /// @return Pointer to element at offset `i` in `v`.
267 inline auto const *w_ptr(w_vector<complex<float> const> *v, size_t i) {
268  return (complex<float> const *)gsl_vector_complex_float_const_ptr(v, i);
269 }
270 
271 
272 /// Pointer to `i`th element of vector `v`, with bounds-checking.
273 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
274 /// @param v Pointer to vector.
275 /// @param i Offset of element in vector.
276 /// @return Pointer to element at offset `i` in `v`.
277 inline auto *w_ptr(w_vector<complex<long double>> *v, size_t i) {
278  return (complex<long double> *)gsl_vector_complex_long_double_ptr(v, i);
279 }
280 
281 
282 /// Pointer to `i`th element of vector `v`, with bounds-checking.
283 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_ptr
284 /// @param v Pointer to vector.
285 /// @param i Offset of element in vector.
286 /// @return Pointer to element at offset `i` in `v`.
287 inline auto const *w_ptr(w_vector<complex<long double> const> *v, size_t i) {
288  return (complex<long double> const *)
289  gsl_vector_complex_long_double_const_ptr(v, i);
290 }
291 
292 
293 } // namespace gsl
294 
295 // EOF
gsl::w_ptr
const auto * w_ptr(w_vector< complex< double > const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:247
gsl::w_ptr
auto * w_ptr(w_vector< long double > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:56
gsl::w_ptr
auto * w_ptr(w_vector< unsigned > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:96
gsl::w_ptr
const auto * w_ptr(w_vector< int const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:86
gsl::w_ptr
const auto * w_ptr(w_vector< complex< long double > const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:287
gsl::w_ptr
const auto * w_ptr(w_vector< unsigned const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:106
gsl::w_ptr
const auto * w_ptr(w_vector< float const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:46
gsl::w_ptr
auto * w_ptr(w_vector< short > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:156
gsl::w_ptr
auto * w_ptr(w_vector< unsigned char > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:217
gsl::w_ptr
const auto * w_ptr(w_vector< unsigned char const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:227
gsl::w_ptr
const auto * w_ptr(w_vector< unsigned long const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:146
gsl::w_ptr
const auto * w_ptr(w_vector< char const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:207
gsl::w_ptr
auto * w_ptr(w_vector< int > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:76
gsl::w_ptr
unsigned const short * w_ptr(w_vector< unsigned short const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:187
gsl::w_ptr
auto * w_ptr(w_vector< float > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:36
gsl::w_ptr
const auto * w_ptr(w_vector< long const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:126
gsl::w_ptr
const auto * w_ptr(w_vector< complex< float > const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:267
gsl::w_ptr
auto * w_ptr(w_vector< complex< float >> *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:257
gsl::w_ptr
const auto * w_ptr(w_vector< short const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:166
gsl::w_ptr
auto * w_ptr(w_vector< long > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:116
gsl::w_ptr
auto * w_ptr(w_vector< unsigned long > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:136
gsl::w_ptr
auto * w_ptr(w_vector< complex< double >> *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:237
gsl::w_ptr
auto * w_ptr(w_vector< complex< long double >> *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:277
gsl::w_ptr
auto * w_ptr(w_vector< double > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:16
gsl::w_ptr
const auto * w_ptr(w_vector< long double const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:66
gsl::w_ptr
auto * w_ptr(w_vector< char > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:197
gsl
Namespace for C++-interface to GSL.
Definition: v-iface.hpp:51
gsl::w_ptr
auto * w_ptr(w_vector< unsigned short > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:176
gsl::w_ptr
const auto * w_ptr(w_vector< double const > *v, size_t i)
Pointer to ith element of vector v, with bounds-checking.
Definition: ptr.hpp:26