Contains various utilities and implementation details which are required for generated schema headers.
More...
|
class | sbepp::detail::byte_range< Byte > |
| Base class for all reference semantics types. More...
|
|
class | sbepp::cursor< Byte > |
| Represents cursor which is used in cursor-based API. Clients should not use undocumented methods. More...
|
|
struct | sbepp::byte_type< View > |
| Trait to get view's byte type. More...
|
|
class | sbepp::detail::composite_base< Byte > |
| Base class for composites. More...
|
|
class | sbepp::detail::message_base< Byte, Header > |
| Base class for messages. More...
|
|
class | sbepp::detail::entry_base< Byte, BlockLengthType > |
| Base class for group entries. More...
|
|
class | sbepp::detail::flat_group_base< Byte, Entry, Dimension > |
| Base class for a flat group. More...
|
|
class | sbepp::detail::nested_group_base< Byte, Entry, Dimension > |
| Base class for a nested group. More...
|
|
class | sbepp::detail::bitset_base< T > |
| Base class for bitsets. More...
|
|
struct | sbepp::default_init_t |
| tag for dynamic_array_ref::resize() . Used to skip value initialization. More...
|
|
class | sbepp::detail::static_array_ref< Byte, Value, N, Tag > |
| Represents reference to fixed-size array. More...
|
|
class | sbepp::detail::dynamic_array_ref< Byte, Value, Length, E > |
| Represents reference to dynamic arrays used for <data> elements. More...
|
|
struct | sbepp::nullopt_t |
| Tag type used to initialize optional types with null value. More...
|
|
class | sbepp::detail::required_base< T, Derived > |
| Base class for required types. More...
|
|
class | sbepp::detail::optional_base< T, Derived > |
| Base class for optional types. More...
|
|
class | sbepp::type_traits< T > |
| Provides various traits and attributes of a <type> element. More...
|
|
class | sbepp::schema_traits< T > |
| Provides various traits/attributes of a <messageSchema> element. More...
|
|
class | sbepp::enum_traits< T > |
| Provides various traits/attributes of an <enum> element. More...
|
|
class | sbepp::enum_value_traits< T > |
| Provides various traits/attributes of a <validValue> element. More...
|
|
class | sbepp::set_traits< T > |
| Provides various traits/attributes of a <set> element. More...
|
|
class | sbepp::set_choice_traits< T > |
| Provides various traits/attributes of a <choice> element. More...
|
|
class | sbepp::composite_traits< T > |
| Provides various traits/attributes of a <composite> element. More...
|
|
class | sbepp::message_traits< T > |
| Provides various traits/attributes of a <message> element. More...
|
|
class | sbepp::field_traits< T > |
| Provides various traits/attributes of a <field> element. More...
|
|
class | sbepp::group_traits< T > |
| Provides various traits/attributes of a <group> element. More...
|
|
class | sbepp::data_traits< T > |
| Provides various traits/attributes of a <data> element. More...
|
|
struct | sbepp::traits_tag< ValueType > |
| Maps representation type to its tag. More...
|
|
class | sbepp::char_t |
| Built-in char required type. More...
|
|
class | sbepp::char_opt_t |
| Built-in char optional type. More...
|
|
class | sbepp::int8_t |
| Built-in int8 required type. More...
|
|
class | sbepp::int8_opt_t |
| Built-in int8 optional type. More...
|
|
class | sbepp::uint8_t |
| Built-in uint8 required type. More...
|
|
class | sbepp::uint8_opt_t |
| Built-in uint8 optional type. More...
|
|
class | sbepp::int16_t |
| Built-in int16 required type. More...
|
|
class | sbepp::int16_opt_t |
| Built-in int16 optional type. More...
|
|
class | sbepp::uint16_t |
| Built-in uint16 required type. More...
|
|
class | sbepp::uint16_opt_t |
| Built-in uint16 optional type. More...
|
|
class | sbepp::int32_t |
| Built-in int32 required type. More...
|
|
class | sbepp::int32_opt_t |
| Built-in int32 optional type. More...
|
|
class | sbepp::uint32_t |
| Built-in uint32 required type. More...
|
|
class | sbepp::uint32_opt_t |
| Built-in uint32 optional type. More...
|
|
class | sbepp::int64_t |
| Built-in int64 required type. More...
|
|
class | sbepp::int64_opt_t |
| Built-in int64 optional type. More...
|
|
class | sbepp::uint64_t |
| Built-in uint64 required type. More...
|
|
class | sbepp::uint64_opt_t |
| Built-in uint64 optional type. More...
|
|
class | sbepp::float_t |
| Built-in float required type. More...
|
|
class | sbepp::float_opt_t |
| Built-in float optional type. More...
|
|
class | sbepp::double_t |
| Built-in double required type. More...
|
|
class | sbepp::double_opt_t |
| Built-in double optional type. More...
|
|
struct | sbepp::unknown_enum_value_tag |
| Tag for unknown enum values. More...
|
|
struct | sbepp::is_enum< T, typename > |
| Checks if T is an enumeration. More...
|
|
struct | sbepp::size_bytes_checked_result |
| Result type of size_bytes_checked More...
|
|
|
#define | SBEPP_HAS_THREE_WAY_COMPARISON 0 |
| 1 if compiler supports three-way comparison, 0 otherwise
|
|
#define | SBEPP_HAS_ENDIAN 0 |
| 1 if compiler supports concepts, 0 otherwise
|
|
#define | SBEPP_HAS_BITCAST 0 |
| 1 if compiler supports std::bitcast , 0 otherwise
|
|
#define | SBEPP_HAS_BYTESWAP 0 |
| 1 if compiler supports std::byteswap , 0 otherwise
|
|
#define | SBEPP_HAS_CONSTEXPR_ALGORITHMS 0 |
| 1 if compiler supports constexpr std algorithms, 0 otherwise
|
|
#define | SBEPP_HAS_CONSTEXPR_ACCESSORS 0 |
| 1 if constexpr accessors are supported, 0 otherwise
|
|
#define | SBEPP_HAS_RANGES 0 |
| 1 if compiler supports ranges, 0 otherwise
|
|
#define | SBEPP_HAS_IS_CONSTANT_EVALUATED 0 |
| 1 if compiler supports std::is_constant_evaluated() , 0 otherwise
|
|
#define | SBEPP_DISABLE_ASSERTS |
| When defined, unconditionally disables assertions and size checks.
|
|
#define | SBEPP_ASSERT_HANDLER |
| When defined, uses client-defined sbepp::assertion_failed as an assertion handler. Whether assertions are enabled is controlled by NDEBUG
|
|
#define | SBEPP_ENABLE_ASSERTS_WITH_HANDLER |
| When defined, unconditionally enables assertions. Requires sbepp::assertion_failed to be defined by the client.
|
|
#define | SBEPP_BYTE_ORDER |
| Must be defined to either little or big when native endianness cannot be detected automatically.
|
|
|
using | sbepp::length_t = std::uint64_t |
| Represents type_traits::length() value type.
|
|
using | sbepp::offset_t = std::uint64_t |
| Represents offset trait value type, e.g. type_traits::offset()
|
|
using | sbepp::version_t = std::uint64_t |
| Represents version trait value type, e.g. type_traits::since_version()
|
|
using | sbepp::schema_id_t = std::uint32_t |
| Represents schema_traits::id() value type.
|
|
using | sbepp::message_id_t = std::uint32_t |
| Represents message_traits::id() value type.
|
|
using | sbepp::block_length_t = std::uint64_t |
| Represents block_length trait value type, e.g. message_traits::block_length()
|
|
using | sbepp::member_id_t = std::uint16_t |
| Represents id trait value type, e.g. field_traits::id()
|
|
using | sbepp::choice_index_t = std::uint8_t |
| Represents set_choice_traits::index() value type.
|
|
template<typename View > |
using | sbepp::byte_type_t = typename byte_type<View>::type |
| Shortcut for byte_type<T>::type
|
|
template<typename ValueType > |
using | sbepp::traits_tag_t = typename traits_tag<ValueType>::type |
| Shorthand for sbepp::traits_tag<T>::type
|
|
template<typename T > |
using | sbepp::is_array_type = typename detail::is_array_type_impl<T>::type |
| Checks is T is an array type.
|
|
template<typename T > |
using | sbepp::is_required_type = detail::is_base_of_tmp<detail::required_base, T> |
| Checks if T is a non-array required type.
|
|
template<typename T > |
using | sbepp::is_optional_type = detail::is_base_of_tmp<detail::optional_base, T> |
| Checks if T is a non-array optional type.
|
|
template<typename T > |
using | sbepp::is_non_array_type |
| Checks if T is a non-array type.
|
|
template<typename T > |
using | sbepp::is_type |
| Checks if T is a type of any kind.
|
|
template<typename T > |
using | sbepp::is_set = detail::is_base_of_tmp<detail::bitset_base, T> |
| Checks if T is a set.
|
|
template<typename T > |
using | sbepp::is_composite = detail::is_base_of_tmp<detail::composite_base, T> |
| Checks if T is a composite.
|
|
template<typename T > |
using | sbepp::is_message = detail::is_base_of_tmp<detail::message_base, T> |
| Checks if T is a message.
|
|
template<typename T > |
using | sbepp::is_flat_group = detail::is_base_of_tmp<detail::flat_group_base, T> |
| Checks if T is a flat group.
|
|
template<typename T > |
using | sbepp::is_nested_group = detail::is_base_of_tmp<detail::nested_group_base, T> |
| Checks if T is a nested group.
|
|
template<typename T > |
using | sbepp::is_group |
| Checks if T is a group of any kind.
|
|
template<typename T > |
using | sbepp::is_group_entry = detail::is_base_of_tmp<detail::entry_base, T> |
| Checks if T is a group entry.
|
|
template<typename T > |
using | sbepp::is_data = typename detail::is_data_impl<T>::type |
| Checks if T is a data.
|
|
|
void | sbepp::assertion_failed (char const *expr, char const *function, char const *file, long line) |
| When SBEPP_ASSERT_HANDLER or SBEPP_ENABLE_ASSERTS_WITH_HANDLER is defined, this function is called for failed assertions. Must be defined by the client.
|
|
template<typename T > |
constexpr std::size_t | sbepp::size_bytes (T v) noexcept |
| Returns the size of the underlying data represented by message/group/entry/data/composite view, including headers.
|
|
template<typename T , typename Byte > |
constexpr std::size_t | sbepp::size_bytes (T v, cursor< Byte > c) noexcept |
| Similar to sbepp::size_bytes but has constant complexity because it expects c to be set at the end of v . Useful to read the whole message and then get its size in constant time. Not applicable to composites.
|
|
template<typename T > |
constexpr auto | sbepp::get_header (T v) noexcept -> decltype(v(detail::get_header_tag{})) |
| Returns the header of a message/group.
|
|
template<typename T > |
constexpr auto | sbepp::addressof (T v) noexcept -> decltype(v(detail::addressof_tag{})) |
| Returns pointer to the underlying data referenced by a view.
|
|
template<typename Byte > |
constexpr detail::init_cursor_wrapper< Byte > | sbepp::cursor_ops::init (cursor< Byte > &c) noexcept |
| Returns a wrapper which will initialize the cursor when it's used and advance after the usage.
|
|
template<typename Byte > |
constexpr detail::dont_move_cursor_wrapper< Byte > | sbepp::cursor_ops::dont_move (cursor< Byte > &c) noexcept |
| Returns a wrapper which doesn't advance the cursor when it's used.
|
|
template<typename Byte > |
constexpr detail::init_dont_move_cursor_wrapper< Byte > | sbepp::cursor_ops::init_dont_move (cursor< Byte > &c) noexcept |
| Returns a wrapper which initializes the cursor but doesn't move it. Behaves like a combination of init() and dont_move() .
|
|
template<typename Byte > |
constexpr detail::skip_cursor_wrapper< Byte > | sbepp::cursor_ops::skip (cursor< Byte > &c) noexcept |
| Returns a wrapper which moves the cursor to the end of field/group/data without returning the accessed value.
|
|
template<typename Enum > |
constexpr std::underlying_type< Enum >::type | sbepp::to_underlying (Enum e) noexcept |
| Converts an enumeration to its underlying type. Equivalent to C++23 std::to_underlying()
|
|
template<typename View > |
constexpr cursor< byte_type_t< View > > | sbepp::init_cursor (View view) noexcept |
| Initializes cursor from a message/group view with the same byte type.
|
|
template<typename View > |
constexpr cursor< typename std::add_const< byte_type_t< View > >::type > | sbepp::init_const_cursor (View view) noexcept |
| Initializes cursor from a message/group view with const byte type.
|
|
template<typename Message > |
constexpr auto | sbepp::fill_message_header (Message m) noexcept -> decltype(m(detail::fill_message_header_tag{})) |
| Fill message header.
|
|
template<typename Group , typename Size > |
constexpr auto | sbepp::fill_group_header (Group g, Size num_in_group) noexcept -> decltype(g(detail::fill_group_header_tag{}, num_in_group)) |
| Fill group header.
|
|
template<template< typename > class View, typename Byte > |
constexpr View< Byte > | sbepp::make_view (Byte *ptr, const std::size_t size) noexcept |
| Construct view from memory buffer.
|
|
template<template< typename > class View, typename Byte > |
constexpr View< typename std::add_const< Byte >::type > | sbepp::make_const_view (Byte *ptr, const std::size_t size) noexcept |
| Construct read-only view from memory buffer.
|
|
template<typename Visitor , typename View , typename Cursor , typename = detail::enable_if_t<detail::is_visitable_view<View>::value>> |
constexpr Visitor && | sbepp::visit (View view, Cursor &c, Visitor &&visitor={}) |
| Visit a view using given cursor.
|
|
template<typename Visitor , typename View , typename = detail::enable_if_t<detail::is_visitable_view<View>::value>> |
constexpr Visitor && | sbepp::visit (View view, Visitor &&visitor={}) |
| Visits a view.
|
|
template<typename Visitor , typename Set > |
constexpr Visitor && | sbepp::visit (Set s, Visitor &&visitor={}) |
| Visits set choices.
|
|
template<typename Visitor , typename Enum > |
constexpr Visitor && | sbepp::visit (Enum e, Visitor &&visitor={}) |
| Visits enum value.
|
|
template<typename Visitor , typename View , typename Cursor , typename = detail::enable_if_t<detail::is_visitable_view<View>::value>> |
constexpr Visitor && | sbepp::visit_children (View view, Cursor &c, Visitor &&visitor={}) |
| Visit view's children using provided cursor.
|
|
template<typename Visitor , typename View , typename = detail::enable_if_t<detail::is_visitable_view<View>::value>> |
constexpr Visitor && | sbepp::visit_children (View view, Visitor &&visitor={}) |
| Visit view's children.
|
|
template<typename E , typename = detail::enable_if_t<is_enum<E>::value>> |
constexpr const char * | sbepp::enum_to_string (const E e) noexcept |
| Converts enum to string.
|
|
template<typename Set , typename Visitor > |
constexpr auto | sbepp::visit_set (const Set s, Visitor &&visitor) noexcept -> decltype(s(detail::visit_set_tag{}, std::forward< Visitor >(visitor))) |
| Visits set choices in order of their declaration.
|
|
template<typename View > |
constexpr size_bytes_checked_result | sbepp::size_bytes_checked (View view, std::size_t size) noexcept |
| Calculate view size with additional safety checks.
|
|
Contains various utilities and implementation details which are required for generated schema headers.