alpaqa 1.0.0a10
Nonconvex constrained optimization
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
ProblemVTable< Conf > Struct Template Reference

#include <alpaqa/problem/type-erased-problem.hpp>

Detailed Description

template<Config Conf>
struct alpaqa::ProblemVTable< Conf >

Struct containing function pointers to all problem functions (like the objective and constraint functions, with their derivatives, and more).

Some default implementations are available. Internal struct, it is used by TypeErasedProblem.

Definition at line 23 of file type-erased-problem.hpp.

+ Inheritance diagram for ProblemVTable< Conf >:
+ Collaboration diagram for ProblemVTable< Conf >:

Public Types

using Box = alpaqa::Box< config_t >
 
template<class F >
using optional_function_t = util::BasicVTable::optional_function_t< F, ProblemVTable >
 
template<class F >
using optional_const_function_t = util::BasicVTable::optional_const_function_t< F, ProblemVTable >
 
template<class F >
using required_function_t = typename required_function< F >::type
 A required function includes a void pointer to self, in addition to the arguments of F.
 
template<class F >
using required_const_function_t = typename required_const_function< F >::type
 A required function includes a void pointer to self, in addition to the arguments of F.
 

Public Member Functions

template<class P >
 ProblemVTable (std::in_place_t, P &p)
 
 ProblemVTable ()=default
 

Static Public Member Functions

static real_t calc_ŷ_dᵀŷ (const void *self, rvec g_ŷ, crvec y, crvec Σ, const ProblemVTable &vtable)
 
static index_t default_eval_inactive_indices_res_lna (const void *, real_t, crvec, crvec, rindexvec, const ProblemVTable &)
 
static void default_eval_jac_g (const void *, crvec, rindexvec, rindexvec, rvec, const ProblemVTable &)
 
static length_t default_get_jac_g_num_nonzeros (const void *, const ProblemVTable &)
 
static void default_eval_grad_gi (const void *, crvec, index_t, rvec, const ProblemVTable &)
 
static void default_eval_hess_L_prod (const void *, crvec, crvec, real_t, crvec, rvec, const ProblemVTable &)
 
static void default_eval_hess_L (const void *, crvec, crvec, real_t, rindexvec, rindexvec, rvec, const ProblemVTable &)
 
static length_t default_get_hess_L_num_nonzeros (const void *, const ProblemVTable &)
 
static void default_eval_hess_ψ_prod (const void *self, crvec x, crvec y, crvec, real_t scale, crvec v, rvec Hv, const ProblemVTable &vtable)
 
static void default_eval_hess_ψ (const void *self, crvec x, crvec y, crvec, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values, const ProblemVTable &vtable)
 
static length_t default_get_hess_ψ_num_nonzeros (const void *, const ProblemVTable &)
 
static real_t default_eval_f_grad_f (const void *self, crvec x, rvec grad_fx, const ProblemVTable &vtable)
 
static real_t default_eval_f_g (const void *self, crvec x, rvec g, const ProblemVTable &vtable)
 
static void default_eval_grad_f_grad_g_prod (const void *self, crvec x, crvec y, rvec grad_f, rvec grad_gxy, const ProblemVTable &vtable)
 
static void default_eval_grad_L (const void *self, crvec x, crvec y, rvec grad_L, rvec work_n, const ProblemVTable &vtable)
 
static real_t default_eval_ψ (const void *self, crvec x, crvec y, crvec Σ, rvec ŷ, const ProblemVTable &vtable)
 
static void default_eval_grad_ψ (const void *self, crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m, const ProblemVTable &vtable)
 
static real_t default_eval_ψ_grad_ψ (const void *self, crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m, const ProblemVTable &vtable)
 
static const Boxdefault_get_box_C (const void *, const ProblemVTable &)
 
static const Boxdefault_get_box_D (const void *, const ProblemVTable &)
 
static void default_check (const void *, const ProblemVTable &)
 

Public Attributes

required_const_function_t< void(crvec z, rvec e)> eval_proj_diff_g
 
required_const_function_t< void(rvec y, real_t M)> eval_proj_multipliers
 
required_const_function_t< real_t(real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p)> eval_prox_grad_step
 
required_const_function_t< real_t(crvec x)> eval_f
 
required_const_function_t< void(crvec x, rvec grad_fx)> eval_grad_f
 
required_const_function_t< void(crvec x, rvec gx)> eval_g
 
required_const_function_t< void(crvec x, crvec y, rvec grad_gxy)> eval_grad_g_prod
 
optional_const_function_t< index_t(real_t γ, crvec x, crvec grad_ψ, rindexvec J)> eval_inactive_indices_res_lna = default_eval_inactive_indices_res_lna
 
optional_const_function_t< void(crvec x, rindexvec inner_idx, rindexvec outer_ptr, rvec J_values)> eval_jac_g = default_eval_jac_g
 
optional_const_function_t< length_t()> get_jac_g_num_nonzeros = default_get_jac_g_num_nonzeros
 
optional_const_function_t< void(crvec x, index_t i, rvec grad_gi)> eval_grad_gi = default_eval_grad_gi
 
optional_const_function_t< void(crvec x, crvec y, real_t scale, crvec v, rvec Hv)> eval_hess_L_prod = default_eval_hess_L_prod
 
optional_const_function_t< void(crvec x, crvec y, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values)> eval_hess_L = default_eval_hess_L
 
optional_const_function_t< length_t()> get_hess_L_num_nonzeros = default_get_hess_L_num_nonzeros
 
optional_const_function_t< void(crvec x, crvec y, crvec Σ, real_t scale, crvec v, rvec Hv)> eval_hess_ψ_prod = default_eval_hess_ψ_prod
 
optional_const_function_t< void(crvec x, crvec y, crvec Σ, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values)> eval_hess_ψ = default_eval_hess_ψ
 
optional_const_function_t< length_t()> get_hess_ψ_num_nonzeros = default_get_hess_ψ_num_nonzeros
 
optional_const_function_t< real_t(crvec x, rvec grad_fx)> eval_f_grad_f = default_eval_f_grad_f
 
optional_const_function_t< real_t(crvec x, rvec g)> eval_f_g = default_eval_f_g
 
optional_const_function_t< void(crvec x, crvec y, rvec grad_f, rvec grad_gxy)> eval_grad_f_grad_g_prod = default_eval_grad_f_grad_g_prod
 
optional_const_function_t< void(crvec x, crvec y, rvec grad_L, rvec work_n)> eval_grad_L = default_eval_grad_L
 
optional_const_function_t< real_t(crvec x, crvec y, crvec Σ, rvec ŷ)> eval_ψ = default_eval_ψ
 
optional_const_function_t< void(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m)> eval_grad_ψ = default_eval_grad_ψ
 
optional_const_function_t< real_t(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m)> eval_ψ_grad_ψ = default_eval_ψ_grad_ψ
 
optional_const_function_t< const Box &()> get_box_C = default_get_box_C
 
optional_const_function_t< const Box &()> get_box_D = default_get_box_D
 
optional_const_function_t< void()> check = default_check
 
length_t n
 
length_t m
 
required_const_function_t< void(void *storage)> copy = nullptr
 Copy-construct a new instance into storage.
 
required_function_t< void(void *storage)> move = nullptr
 Move-construct a new instance into storage.
 
required_function_t< void()> destroy = nullptr
 Destruct the given instance.
 
const std::type_info * type = &typeid(void)
 The original type of the stored object.
 

Member Typedef Documentation

◆ Box

using Box = alpaqa::Box<config_t>

Definition at line 25 of file type-erased-problem.hpp.

◆ optional_function_t

Definition at line 28 of file type-erased-problem.hpp.

◆ optional_const_function_t

Definition at line 30 of file type-erased-problem.hpp.

◆ required_function_t

using required_function_t = typename required_function<F>::type
inherited

A required function includes a void pointer to self, in addition to the arguments of F.

Definition at line 78 of file type-erasure.hpp.

◆ required_const_function_t

A required function includes a void pointer to self, in addition to the arguments of F.

For const-qualified member functions.

Definition at line 82 of file type-erasure.hpp.

Constructor & Destructor Documentation

◆ ProblemVTable() [1/2]

ProblemVTable ( std::in_place_t  ,
P &  p 
)
inline

Definition at line 153 of file type-erased-problem.hpp.

◆ ProblemVTable() [2/2]

ProblemVTable ( )
default

Member Function Documentation

◆ calc_ŷ_dᵀŷ()

auto calc_ŷ_dᵀŷ ( const void *  self,
rvec  g_ŷ,
crvec  y,
crvec  Σ,
const ProblemVTable< Conf > &  vtable 
)
static

Definition at line 8 of file type-erased-problem.tpp.

◆ default_eval_inactive_indices_res_lna()

auto default_eval_inactive_indices_res_lna ( const void *  ,
real_t  ,
crvec  ,
crvec  ,
rindexvec  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 35 of file type-erased-problem.tpp.

◆ default_eval_jac_g()

void default_eval_jac_g ( const void *  ,
crvec  ,
rindexvec  ,
rindexvec  ,
rvec  ,
const ProblemVTable< Conf > &  vtable 
)
static

Definition at line 42 of file type-erased-problem.tpp.

◆ default_get_jac_g_num_nonzeros()

auto default_get_jac_g_num_nonzeros ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 49 of file type-erased-problem.tpp.

◆ default_eval_grad_gi()

void default_eval_grad_gi ( const void *  ,
crvec  ,
index_t  ,
rvec  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 55 of file type-erased-problem.tpp.

◆ default_eval_hess_L_prod()

void default_eval_hess_L_prod ( const void *  ,
crvec  ,
crvec  ,
real_t  ,
crvec  ,
rvec  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 61 of file type-erased-problem.tpp.

◆ default_eval_hess_L()

void default_eval_hess_L ( const void *  ,
crvec  ,
crvec  ,
real_t  ,
rindexvec  ,
rindexvec  ,
rvec  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 67 of file type-erased-problem.tpp.

◆ default_get_hess_L_num_nonzeros()

auto default_get_hess_L_num_nonzeros ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 73 of file type-erased-problem.tpp.

◆ default_eval_hess_ψ_prod()

void default_eval_hess_ψ_prod ( const void *  self,
crvec  x,
crvec  y,
crvec  ,
real_t  scale,
crvec  v,
rvec  Hv,
const ProblemVTable< Conf > &  vtable 
)
static

Definition at line 79 of file type-erased-problem.tpp.

◆ default_eval_hess_ψ()

void default_eval_hess_ψ ( const void *  self,
crvec  x,
crvec  y,
crvec  ,
real_t  scale,
rindexvec  inner_idx,
rindexvec  outer_ptr,
rvec  H_values,
const ProblemVTable< Conf > &  vtable 
)
static

Definition at line 88 of file type-erased-problem.tpp.

◆ default_get_hess_ψ_num_nonzeros()

auto default_get_hess_ψ_num_nonzeros ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 98 of file type-erased-problem.tpp.

◆ default_eval_f_grad_f()

auto default_eval_f_grad_f ( const void *  self,
crvec  x,
rvec  grad_fx,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
auto ProblemVTable<Conf>::default_eval_f_grad_f(const void *self, crvec x, rvec grad_fx,
const ProblemVTable &vtable) -> real_t {
vtable.eval_grad_f(self, x, grad_fx);
return vtable.eval_f(self, x);
}
typename Conf::real_t real_t
Definition: config.hpp:63
typename Conf::rvec rvec
Definition: config.hpp:67
typename Conf::crvec crvec
Definition: config.hpp:68
Struct containing function pointers to all problem functions (like the objective and constraint funct...
static real_t default_eval_f_grad_f(const void *self, crvec x, rvec grad_fx, const ProblemVTable &vtable)

Definition at line 106 of file type-erased-problem.tpp.

◆ default_eval_f_g()

auto default_eval_f_g ( const void *  self,
crvec  x,
rvec  g,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
auto ProblemVTable<Conf>::default_eval_f_g(const void *self, crvec x, rvec g,
const ProblemVTable &vtable) -> real_t {
vtable.eval_g(self, x, g);
return vtable.eval_f(self, x);
}
static real_t default_eval_f_g(const void *self, crvec x, rvec g, const ProblemVTable &vtable)

Definition at line 116 of file type-erased-problem.tpp.

◆ default_eval_grad_f_grad_g_prod()

void default_eval_grad_f_grad_g_prod ( const void *  self,
crvec  x,
crvec  y,
rvec  grad_f,
rvec  grad_gxy,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
rvec grad_f, rvec grad_gxy,
const ProblemVTable &vtable) {
vtable.eval_grad_f(self, x, grad_f);
vtable.eval_grad_g_prod(self, x, y, grad_gxy);
}
static void default_eval_grad_f_grad_g_prod(const void *self, crvec x, crvec y, rvec grad_f, rvec grad_gxy, const ProblemVTable &vtable)
required_const_function_t< void(crvec x, crvec y, rvec grad_gxy)> eval_grad_g_prod
required_const_function_t< void(crvec x, rvec grad_fx)> eval_grad_f

Definition at line 126 of file type-erased-problem.tpp.

◆ default_eval_grad_L()

void default_eval_grad_L ( const void *  self,
crvec  x,
crvec  y,
rvec  grad_L,
rvec  work_n,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
void ProblemVTable<Conf>::default_eval_grad_L(const void *self, crvec x, crvec y, rvec grad_L,
rvec work_n, const ProblemVTable &vtable) {
if (y.size() == 0) /* [[unlikely]] */
return vtable.eval_grad_f(self, x, grad_L);
vtable.eval_grad_f_grad_g_prod(self, x, y, grad_L, work_n, vtable);
grad_L += work_n;
}
static void default_eval_grad_L(const void *self, crvec x, crvec y, rvec grad_L, rvec work_n, const ProblemVTable &vtable)
optional_const_function_t< void(crvec x, crvec y, rvec grad_f, rvec grad_gxy)> eval_grad_f_grad_g_prod

Definition at line 137 of file type-erased-problem.tpp.

◆ default_eval_ψ()

auto default_eval_ψ ( const void *  self,
crvec  x,
crvec  y,
crvec  Σ,
rvec  ŷ,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
auto ProblemVTable<Conf>::default_eval_ψ(const void *self, crvec x, crvec y, crvec Σ, rvec ŷ,
const ProblemVTable &vtable) -> real_t {
if (y.size() == 0) /* [[unlikely]] */
return vtable.eval_f(self, x);
auto f = vtable.eval_f_g(self, x, ŷ, vtable);
auto dᵀŷ = calc_ŷ_dᵀŷ(self, ŷ, y, Σ, vtable);
// ψ(x) = f(x) + ½ dᵀŷ
auto ψ = f + real_t(0.5) * dᵀŷ;
return ψ;
}
static real_t default_eval_ψ(const void *self, crvec x, crvec y, crvec Σ, rvec ŷ, const ProblemVTable &vtable)
static real_t calc_ŷ_dᵀŷ(const void *self, rvec g_ŷ, crvec y, crvec Σ, const ProblemVTable &vtable)

Definition at line 149 of file type-erased-problem.tpp.

◆ default_eval_grad_ψ()

void default_eval_grad_ψ ( const void *  self,
crvec  x,
crvec  y,
crvec  Σ,
rvec  grad_ψ,
rvec  work_n,
rvec  work_m,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
rvec grad_ψ, rvec work_n, rvec work_m,
const ProblemVTable &vtable) {
if (y.size() == 0) /* [[unlikely]] */ {
vtable.eval_grad_f(self, x, grad_ψ);
} else {
vtable.eval_g(self, x, work_m);
(void)calc_ŷ_dᵀŷ(self, work_m, y, Σ, vtable);
vtable.eval_grad_L(self, x, work_m, grad_ψ, work_n, vtable);
}
}
optional_const_function_t< void(crvec x, crvec y, rvec grad_L, rvec work_n)> eval_grad_L
static void default_eval_grad_ψ(const void *self, crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m, const ProblemVTable &vtable)
required_const_function_t< void(crvec x, rvec gx)> eval_g

Definition at line 165 of file type-erased-problem.tpp.

◆ default_eval_ψ_grad_ψ()

auto default_eval_ψ_grad_ψ ( const void *  self,
crvec  x,
crvec  y,
crvec  Σ,
rvec  grad_ψ,
rvec  work_n,
rvec  work_m,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
rvec grad_ψ, rvec work_n, rvec work_m,
const ProblemVTable &vtable) -> real_t {
if (y.size() == 0) /* [[unlikely]] */
return vtable.eval_f_grad_f(self, x, grad_ψ, vtable);
auto &ŷ = work_m;
// ψ(x) = f(x) + ½ dᵀŷ
auto f = vtable.eval_f_g(self, x, ŷ, vtable);
auto dᵀŷ = calc_ŷ_dᵀŷ(self, ŷ, y, Σ, vtable);
auto ψ = f + real_t(0.5) * dᵀŷ;
// ∇ψ(x) = ∇f(x) + ∇g(x) ŷ
vtable.eval_grad_L(self, x, ŷ, grad_ψ, work_n, vtable);
return ψ;
}
static real_t default_eval_ψ_grad_ψ(const void *self, crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m, const ProblemVTable &vtable)

Definition at line 181 of file type-erased-problem.tpp.

◆ default_get_box_C()

auto default_get_box_C ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 199 of file type-erased-problem.tpp.

◆ default_get_box_D()

auto default_get_box_D ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 204 of file type-erased-problem.tpp.

◆ default_check()

void default_check ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 209 of file type-erased-problem.tpp.

Member Data Documentation

◆ eval_proj_diff_g

required_const_function_t<void(crvec z, rvec e)> eval_proj_diff_g

Definition at line 37 of file type-erased-problem.hpp.

◆ eval_proj_multipliers

required_const_function_t<void(rvec y, real_t M)> eval_proj_multipliers

Definition at line 39 of file type-erased-problem.hpp.

◆ eval_prox_grad_step

required_const_function_t<real_t(real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p)> eval_prox_grad_step

Definition at line 41 of file type-erased-problem.hpp.

◆ eval_f

Definition at line 43 of file type-erased-problem.hpp.

◆ eval_grad_f

required_const_function_t<void(crvec x, rvec grad_fx)> eval_grad_f

Definition at line 45 of file type-erased-problem.hpp.

◆ eval_g

required_const_function_t<void(crvec x, rvec gx)> eval_g

Definition at line 47 of file type-erased-problem.hpp.

◆ eval_grad_g_prod

required_const_function_t<void(crvec x, crvec y, rvec grad_gxy)> eval_grad_g_prod

Definition at line 49 of file type-erased-problem.hpp.

◆ eval_inactive_indices_res_lna

Definition at line 51 of file type-erased-problem.hpp.

◆ eval_jac_g

optional_const_function_t<void(crvec x, rindexvec inner_idx, rindexvec outer_ptr, rvec J_values)> eval_jac_g = default_eval_jac_g

Definition at line 55 of file type-erased-problem.hpp.

◆ get_jac_g_num_nonzeros

Definition at line 57 of file type-erased-problem.hpp.

◆ eval_grad_gi

optional_const_function_t<void(crvec x, index_t i, rvec grad_gi)> eval_grad_gi = default_eval_grad_gi

Definition at line 59 of file type-erased-problem.hpp.

◆ eval_hess_L_prod

optional_const_function_t<void(crvec x, crvec y, real_t scale, crvec v, rvec Hv)> eval_hess_L_prod = default_eval_hess_L_prod

Definition at line 61 of file type-erased-problem.hpp.

◆ eval_hess_L

optional_const_function_t<void(crvec x, crvec y, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values)> eval_hess_L = default_eval_hess_L

Definition at line 63 of file type-erased-problem.hpp.

◆ get_hess_L_num_nonzeros

Definition at line 65 of file type-erased-problem.hpp.

◆ eval_hess_ψ_prod

optional_const_function_t<void(crvec x, crvec y, crvec Σ, real_t scale, crvec v, rvec Hv)> eval_hess_ψ_prod = default_eval_hess_ψ_prod

Definition at line 67 of file type-erased-problem.hpp.

◆ eval_hess_ψ

optional_const_function_t<void(crvec x, crvec y, crvec Σ, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values)> eval_hess_ψ = default_eval_hess_ψ

Definition at line 69 of file type-erased-problem.hpp.

◆ get_hess_ψ_num_nonzeros

Definition at line 71 of file type-erased-problem.hpp.

◆ eval_f_grad_f

Definition at line 75 of file type-erased-problem.hpp.

◆ eval_f_g

Definition at line 77 of file type-erased-problem.hpp.

◆ eval_grad_f_grad_g_prod

optional_const_function_t<void(crvec x, crvec y, rvec grad_f, rvec grad_gxy)> eval_grad_f_grad_g_prod = default_eval_grad_f_grad_g_prod

Definition at line 79 of file type-erased-problem.hpp.

◆ eval_grad_L

optional_const_function_t<void(crvec x, crvec y, rvec grad_L, rvec work_n)> eval_grad_L = default_eval_grad_L

Definition at line 83 of file type-erased-problem.hpp.

◆ eval_ψ

Definition at line 85 of file type-erased-problem.hpp.

◆ eval_grad_ψ

optional_const_function_t<void(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m)> eval_grad_ψ = default_eval_grad_ψ

Definition at line 87 of file type-erased-problem.hpp.

◆ eval_ψ_grad_ψ

optional_const_function_t<real_t(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m)> eval_ψ_grad_ψ = default_eval_ψ_grad_ψ

Definition at line 89 of file type-erased-problem.hpp.

◆ get_box_C

Definition at line 93 of file type-erased-problem.hpp.

◆ get_box_D

Definition at line 95 of file type-erased-problem.hpp.

◆ check

Definition at line 99 of file type-erased-problem.hpp.

◆ n

Definition at line 150 of file type-erased-problem.hpp.

◆ m

Definition at line 150 of file type-erased-problem.hpp.

◆ copy

required_const_function_t<void(void *storage)> copy = nullptr
inherited

Copy-construct a new instance into storage.

Definition at line 95 of file type-erasure.hpp.

◆ move

required_function_t<void(void *storage)> move = nullptr
inherited

Move-construct a new instance into storage.

Definition at line 97 of file type-erasure.hpp.

◆ destroy

required_function_t<void()> destroy = nullptr
inherited

Destruct the given instance.

Definition at line 99 of file type-erasure.hpp.

◆ type

const std::type_info* type = &typeid(void)
inherited

The original type of the stored object.

Definition at line 101 of file type-erasure.hpp.


The documentation for this struct was generated from the following files: