Skip to content

Commit 07bece7

Browse files
committed
add missing documentation
1 parent fe06b42 commit 07bece7

1 file changed

Lines changed: 54 additions & 6 deletions

File tree

src/smith/numerics/functional/tuple.hpp

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ struct tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> {
5959

6060
namespace detail {
6161

62+
/// @brief Return element @p i from a 10- or 11-element tuple.
6263
template <int i, typename Tuple>
6364
MFEM_HOST_DEVICE constexpr auto& tuple_get_extended(Tuple& values)
6465
{
@@ -98,6 +99,7 @@ MFEM_HOST_DEVICE constexpr auto& tuple_get_extended(Tuple& values)
9899
MFEM_UNREACHABLE();
99100
}
100101

102+
/// @brief Return const element @p i from a 10- or 11-element tuple.
101103
template <int i, typename Tuple>
102104
MFEM_HOST_DEVICE constexpr const auto& tuple_get_extended(const Tuple& values)
103105
{
@@ -139,6 +141,7 @@ MFEM_HOST_DEVICE constexpr const auto& tuple_get_extended(const Tuple& values)
139141

140142
} // namespace detail
141143

144+
/// @brief Return mutable element @p i from a 10-element tuple.
142145
template <int i, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7,
143146
typename T8, typename T9>
144147
MFEM_HOST_DEVICE constexpr auto& get(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& values)
@@ -147,6 +150,7 @@ MFEM_HOST_DEVICE constexpr auto& get(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T
147150
return detail::tuple_get_extended<i>(values);
148151
}
149152

153+
/// @brief Return mutable element @p i from an 11-element tuple.
150154
template <int i, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7,
151155
typename T8, typename T9, typename T10>
152156
MFEM_HOST_DEVICE constexpr auto& get(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& values)
@@ -155,6 +159,7 @@ MFEM_HOST_DEVICE constexpr auto& get(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T
155159
return detail::tuple_get_extended<i>(values);
156160
}
157161

162+
/// @brief Return const element @p i from a 10-element tuple.
158163
template <int i, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7,
159164
typename T8, typename T9>
160165
MFEM_HOST_DEVICE constexpr const auto& get(const tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& values)
@@ -163,6 +168,7 @@ MFEM_HOST_DEVICE constexpr const auto& get(const tuple<T0, T1, T2, T3, T4, T5, T
163168
return detail::tuple_get_extended<i>(values);
164169
}
165170

171+
/// @brief Return const element @p i from an 11-element tuple.
166172
template <int i, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7,
167173
typename T8, typename T9, typename T10>
168174
MFEM_HOST_DEVICE constexpr const auto& get(const tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& values)
@@ -171,6 +177,25 @@ MFEM_HOST_DEVICE constexpr const auto& get(const tuple<T0, T1, T2, T3, T4, T5, T
171177
return detail::tuple_get_extended<i>(values);
172178
}
173179

180+
/**
181+
* @brief a function intended to be used for extracting the ith type from a tuple.
182+
*
183+
* @note type<i>(my_tuple) returns a value, whereas get<i>(my_tuple) returns a reference
184+
*
185+
* @tparam i the index of the tuple to query
186+
* @tparam T0 The first type stored in the tuple
187+
* @tparam T1 The second type stored in the tuple
188+
* @tparam T2 The third type stored in the tuple
189+
* @tparam T3 The fourth type stored in the tuple
190+
* @tparam T4 The fifth type stored in the tuple
191+
* @tparam T5 The sixth type stored in the tuple
192+
* @tparam T6 The seventh type stored in the tuple
193+
* @tparam T7 The eighth type stored in the tuple
194+
* @tparam T8 The ninth type stored in the tuple
195+
* @tparam T9 The tenth type stored in the tuple
196+
* @param values the tuple of values
197+
* @return a copy of the ith entry of the input
198+
*/
174199
template <int i, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7,
175200
typename T8, typename T9>
176201
MFEM_HOST_DEVICE constexpr auto type(const tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& values)
@@ -179,6 +204,26 @@ MFEM_HOST_DEVICE constexpr auto type(const tuple<T0, T1, T2, T3, T4, T5, T6, T7,
179204
return detail::tuple_get_extended<i>(values);
180205
}
181206

207+
/**
208+
* @brief a function intended to be used for extracting the ith type from a tuple.
209+
*
210+
* @note type<i>(my_tuple) returns a value, whereas get<i>(my_tuple) returns a reference
211+
*
212+
* @tparam i the index of the tuple to query
213+
* @tparam T0 The first type stored in the tuple
214+
* @tparam T1 The second type stored in the tuple
215+
* @tparam T2 The third type stored in the tuple
216+
* @tparam T3 The fourth type stored in the tuple
217+
* @tparam T4 The fifth type stored in the tuple
218+
* @tparam T5 The sixth type stored in the tuple
219+
* @tparam T6 The seventh type stored in the tuple
220+
* @tparam T7 The eighth type stored in the tuple
221+
* @tparam T8 The ninth type stored in the tuple
222+
* @tparam T9 The tenth type stored in the tuple
223+
* @tparam T10 The eleventh type stored in the tuple
224+
* @param values the tuple of values
225+
* @return a copy of the ith entry of the input
226+
*/
182227
template <int i, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7,
183228
typename T8, typename T9, typename T10>
184229
MFEM_HOST_DEVICE constexpr auto type(const tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& values)
@@ -191,29 +236,32 @@ MFEM_HOST_DEVICE constexpr auto type(const tuple<T0, T1, T2, T3, T4, T5, T6, T7,
191236

192237
namespace smith {
193238

194-
/**
195-
* @brief Alias for the CUDA-capable MFEM tuple implementation used by Smith.
196-
*
197-
* Keep Smith's public tuple spelling available while sharing the implementation
198-
* with MFEM's future namespace.
199-
*/
239+
/// @brief Expose MFEM tuple in the Smith namespace.
200240
template <typename... T>
201241
using tuple = mfem::future::tuple<T...>;
202242

243+
/// @brief Expose MFEM tuple application in the Smith namespace.
203244
using mfem::future::apply;
245+
/// @brief Expose MFEM tuple element access in the Smith namespace.
204246
using mfem::future::get;
247+
/// @brief Expose MFEM tuple construction in the Smith namespace.
205248
using mfem::future::make_tuple;
249+
/// @brief Expose MFEM tuple type selection in the Smith namespace.
206250
using mfem::future::type;
207251

252+
/// @brief Alias for the MFEM tuple size trait.
208253
template <class... Types>
209254
using tuple_size = mfem::future::tuple_size<Types...>;
210255

256+
/// @brief Alias for the MFEM tuple element trait.
211257
template <size_t I, class T>
212258
using tuple_element = mfem::future::tuple_element<I, T>;
213259

260+
/// @brief Alias for the MFEM tuple detection trait.
214261
template <typename T>
215262
using is_tuple = mfem::future::is_tuple<T>;
216263

264+
/// @brief Alias for the MFEM nested tuple detection trait.
217265
template <typename T>
218266
using is_tuple_of_tuples = mfem::future::is_tuple_of_tuples<T>;
219267

0 commit comments

Comments
 (0)