gtopt::InputContext class

Base classes

template<typename SystemLP_Type SystemLP_Type>
class ElementContext<SystemLP>
Provides a context for interacting with elements within a SystemLP.
struct InputTraits
Input data access traits.

Public types

template<typename... Uid>
using array_table_vector_uid_idx_t = std::tuple<array_uid_idx_map_t<Uid...>, table_uid_idx_map_t<Uid...>, vector_uid_idx_t<Uid...>>
template<typename... Uid>
using array_uid_idx_map_t = base_map_t<CFNameUid, arrow_array_uid_idx_t<Uid...>>
template<typename... Uid>
using array_vector_uid_idx_v = std::variant<arrow_array_uid_idx_t<Uid...>, vector_uid_idx_t<Uid...>>
template<typename... Uid>
using arrow_array_uid_idx_t = std::pair<ArrowChunkedArray, ArrowUidIdx<Uid...>>
template<typename... Uid>
using arrow_table_uid_idx_t = std::tuple<ArrowTable, ArrowUidIdx<Uid...>>
template<typename... Uid>
using ArrowUidIdx = UidToArrowIdx<Uid...>::UidIdx
template<typename Key, typename Value Value>
using base_map_t = gtopt::flat_map<Key, Value>
using CFName = std::tuple<ClassNameType, FieldNameType>
using CFNameUid = std::tuple<ClassNameType, FieldNameType, Uid>
using ClassNameType = std::string_view
using FieldNameType = std::string_view
template<typename... Uid>
using idx_key_t = UidToVectorIdx<Uid...>::IndexKey
template<typename value_type, typename... Uid>
using idx_vector_t = mvector_traits<value_type, idx_key_t<Uid...>>::vector_type
template<typename... Uid>
using table_uid_idx_map_t = base_map_t<CFName, arrow_table_uid_idx_t<Uid...>>
template<typename... Uid>
using vector_uid_idx_t = VectorUidIdx<Uid...>
template<typename... Uid>
using VectorUidIdx = UidToVectorIdx<Uid...>::UidIdx

Public static functions

template<typename Type, typename RType RType = Type, typename FSched, typename UidIdx, typename AccessOper AccessOper, typename... Uid>
static auto access_sched(const FSched& sched, const UidIdx& uid_idx, AccessOper access_oper, Uid... uid) -> RType -> constexpr auto
template<typename Type, typename FSched, typename UidIdx, typename... Uid>
static auto at_sched(const FSched& sched, const UidIdx& uid_idx, Uid... uid) -> Type -> constexpr auto
template<typename Type, typename FSched, typename UidIdx, typename... Uid>
static auto optval_sched(const FSched& sched, const UidIdx& uid_idx, Uid... uid) -> std::optional< Type > -> constexpr auto

Constructors, destructors, conversion operators

InputContext(const SystemContext& system_context) explicit

Public functions

auto add_element(Element&& element) -> auto
Adds a new element to the system.
auto element(const Id<Element>& id) const -> constexpr auto&&
Gets a reference to an element by its ID.
auto element_index(const Id<Element>& id) const -> constexpr auto
Gets the index of an element by its ID.
template<typename Element Element>
auto element_index(const ObjectSingleId<Element>& id) const -> ElementIndex< Element > -> auto
auto elements() const -> constexpr auto&& noexcept
Gets a container of all elements of a specific type.
template<typename Type, typename FSched, typename... Uids>
auto get_array_index(const FSched& sched, std::string_view cname, const Id& id) const -> auto
auto make_element_index(this Self&& self, const Object& objori, const std::variant<Uid, Name, Attrs>& element_var) -> ElementIndex< Element > -> auto
Finds an existing element's index or creates a new one.
auto system_context() const -> constexpr auto&&
auto system_lp(this auto& self) -> constexpr SystemLP& noexcept
Gets the underlying SystemLP object.
auto system_lp(this const auto& self) -> constexpr const SystemLP& noexcept

Typedef documentation

template<typename... Uid>
using gtopt::InputContext::array_table_vector_uid_idx_t = std::tuple<array_uid_idx_map_t<Uid...>, table_uid_idx_map_t<Uid...>, vector_uid_idx_t<Uid...>>

template<typename... Uid>
using gtopt::InputContext::array_uid_idx_map_t = base_map_t<CFNameUid, arrow_array_uid_idx_t<Uid...>>

template<typename... Uid>
using gtopt::InputContext::array_vector_uid_idx_v = std::variant<arrow_array_uid_idx_t<Uid...>, vector_uid_idx_t<Uid...>>

template<typename... Uid>
using gtopt::InputContext::arrow_array_uid_idx_t = std::pair<ArrowChunkedArray, ArrowUidIdx<Uid...>>

template<typename... Uid>
using gtopt::InputContext::arrow_table_uid_idx_t = std::tuple<ArrowTable, ArrowUidIdx<Uid...>>

template<typename... Uid>
using gtopt::InputContext::ArrowUidIdx = UidToArrowIdx<Uid...>::UidIdx

template<typename Key, typename Value Value>
using gtopt::InputContext::base_map_t = gtopt::flat_map<Key, Value>

using gtopt::InputContext::CFName = std::tuple<ClassNameType, FieldNameType>

using gtopt::InputContext::CFNameUid = std::tuple<ClassNameType, FieldNameType, Uid>

using gtopt::InputContext::ClassNameType = std::string_view

using gtopt::InputContext::FieldNameType = std::string_view

template<typename... Uid>
using gtopt::InputContext::idx_key_t = UidToVectorIdx<Uid...>::IndexKey

template<typename value_type, typename... Uid>
using gtopt::InputContext::idx_vector_t = mvector_traits<value_type, idx_key_t<Uid...>>::vector_type

template<typename... Uid>
using gtopt::InputContext::table_uid_idx_map_t = base_map_t<CFName, arrow_table_uid_idx_t<Uid...>>

template<typename... Uid>
using gtopt::InputContext::vector_uid_idx_t = VectorUidIdx<Uid...>

template<typename... Uid>
using gtopt::InputContext::VectorUidIdx = UidToVectorIdx<Uid...>::UidIdx

Function documentation

template<typename Type, typename RType RType = Type, typename FSched, typename UidIdx, typename AccessOper AccessOper, typename... Uid>
static constexpr auto gtopt::InputContext::access_sched(const FSched& sched, const UidIdx& uid_idx, AccessOper access_oper, Uid... uid) -> RType

template<typename Type, typename FSched, typename UidIdx, typename... Uid>
static constexpr auto gtopt::InputContext::at_sched(const FSched& sched, const UidIdx& uid_idx, Uid... uid) -> Type

template<typename Type, typename FSched, typename UidIdx, typename... Uid>
static constexpr auto gtopt::InputContext::optval_sched(const FSched& sched, const UidIdx& uid_idx, Uid... uid) -> std::optional< Type >

auto gtopt::InputContext::add_element(Element&& element)

Adds a new element to the system.

Parameters
element The element to add (rvalue reference).
Returns The ElementIndex of the newly added element.

constexpr auto&& gtopt::InputContext::element(const Id<Element>& id) const

Gets a reference to an element by its ID.

Parameters
id The ID of the element.
Returns A reference to the element.
Exceptions
std::out_of_range if the element is not found.

constexpr auto gtopt::InputContext::element_index(const Id<Element>& id) const

Gets the index of an element by its ID.

Parameters
id The ID of the element.
Returns The ElementIndex for the given ID.
Exceptions
std::out_of_range if the element is not found.

constexpr auto&& gtopt::InputContext::elements() const noexcept

Gets a container of all elements of a specific type.

Returns A const reference to the container of elements.

auto gtopt::InputContext::make_element_index(this Self&& self, const Object& objori, const std::variant<Uid, Name, Attrs>& element_var) -> ElementIndex< Element >

Finds an existing element's index or creates a new one.

Parameters
self The ElementContext instance.
objori The original object with base data.
element_var A variant holding either a Uid, a Name, or Attrs.
Returns ElementIndex of the found or created element.

This function attempts to find an element by Uid or Name. If not found, it creates a new element using the provided attributes and original object data.

constexpr SystemLP& gtopt::InputContext::system_lp(this auto& self) noexcept

Gets the underlying SystemLP object.

Returns A reference to the SystemLP object, preserving const and value category.

constexpr const SystemLP& gtopt::InputContext::system_lp(this const auto& self) noexcept