DiFfRG
Loading...
Searching...
No Matches
tuples.hh File Reference
#include <cmath>
#include <cstring>
#include <string_view>
#include <tuple>
#include <utility>
#include <DiFfRG/common/fixed_string.hh>

Go to the source code of this file.

Classes

struct  DiFfRG::named_tuple< tuple_type, strs >
 A class to store a tuple with elements that can be accessed by name. The names are stored as FixedString objects and their lookup is done at compile time. More...
 
struct  std::tuple_size< DiFfRG::named_tuple< tuple_type, strs... > >
 
class  DiFfRG::SimpleMatrix< NT, N, M >
 A simple NxM-matrix class, which is used for cell-wise Jacobians. More...
 

Namespaces

namespace  DiFfRG
 
namespace  std
 

Functions

constexpr bool DiFfRG::strings_equal (char const *a, char const *b)
 Check if two strings are equal at compile time.
 
template<FixedString name, typename tuple_type , FixedString... strs>
constexpr auto & DiFfRG::get (named_tuple< tuple_type, strs... > &ob)
 get a reference to the element with the given name
 
template<FixedString name, typename tuple_type , FixedString... strs>
constexpr auto & DiFfRG::get (named_tuple< tuple_type, strs... > &&ob)
 
template<FixedString name, typename tuple_type , FixedString... strs>
constexpr auto & DiFfRG::get (const named_tuple< tuple_type, strs... > &ob)
 
template<size_t idx, typename tuple_type , DiFfRG::FixedString... strs>
constexpr auto & std::get (DiFfRG::named_tuple< tuple_type, strs... > &ob)
 
template<size_t idx, typename tuple_type , DiFfRG::FixedString... strs>
constexpr auto & std::get (DiFfRG::named_tuple< tuple_type, strs... > &&ob)
 
template<size_t idx, typename tuple_type , DiFfRG::FixedString... strs>
constexpr auto & std::get (const DiFfRG::named_tuple< tuple_type, strs... > &ob)
 
template<uint n, typename NT , typename Vector >
std::array< NT, n > DiFfRG::vector_to_array (const Vector &v)
 
template<typename T , std::size_t... Indices>
auto DiFfRG::vectorToTupleHelper (const std::vector< T > &v, std::index_sequence< Indices... >)
 
template<std::size_t N, typename T >
auto DiFfRG::vector_to_tuple (const std::vector< T > &v)
 
template<typename Head , typename... Tail>
constexpr auto DiFfRG::tuple_tail (const std::tuple< Head, Tail... > &t)
 
template<typename tuple_type , FixedString... strs>
constexpr auto DiFfRG::tuple_tail (const named_tuple< tuple_type, strs... > &t)
 
template<int i, typename Head , typename... Tail>
constexpr auto DiFfRG::tuple_last (const std::tuple< Head, Tail... > &t)
 
template<int i, typename tuple_type , FixedString... strs>
constexpr auto DiFfRG::tuple_last (const named_tuple< tuple_type, strs... > &t)
 
template<int i, typename Head , typename... Tail>
constexpr auto DiFfRG::tuple_first (const std::tuple< Head, Tail... > &t)
 
template<int i, typename tuple_type , FixedString... strs>
constexpr auto DiFfRG::tuple_first (const named_tuple< tuple_type, strs... > &t)
 
template<typename T , size_t N, size_t... IDXs>
auto DiFfRG::_local_sol_tuple (const std::array< T, N > &a, std::index_sequence< IDXs... >, uint q_index)
 
template<typename T , size_t N>
auto DiFfRG::local_sol_q (const std::array< T, N > &a, uint q_index)
 
template<typename T_inner , typename Model , size_t... IDXs>
auto DiFfRG::_jacobian_tuple (std::index_sequence< IDXs... >)
 
template<typename T_inner , typename Model >
auto DiFfRG::jacobian_tuple ()
 
template<typename T_inner , typename Model , size_t... IDXs>
auto DiFfRG::_jacobian_2_tuple (std::index_sequence< IDXs... >)
 
template<typename T_inner , typename Model >
auto DiFfRG::jacobian_2_tuple ()