Skip to content

API muesli fluent transformable

Felix Jones edited this page Jan 15, 2026 · 1 revision

muesli/fluent/transformable

Defined in header <muesli/fluent/transformable>

transform_codec

template<EncodeFn, DecodeFn, ValueType>
struct transform_codec

Forward declaration of transform_codec

Member Functions

transform

Applies bidirectional transformation to encode and decode

template<typename EncodeFn, typename DecodeFn> constexpr auto transform(EncodeFn enc, DecodeFn dec) const requires Codec<Derived>

Parameters:

  • enc — Transform to apply during encoding
  • dec — Transform to apply during decoding

Returns: A transform_codec wrapping this codec

transform_input

Transforms only during deserialisation (decode)

template<typename DecodeFn> constexpr auto transform_input(DecodeFn dec) const requires Codec<Derived>

Parameters:

  • dec — Transform to apply during decoding

Returns: A transform_codec wrapping this codec

transform_output

Transforms only during serialisation (encode)

template<typename EncodeFn> constexpr auto transform_output(EncodeFn enc) const requires Codec<Derived>

Parameters:

  • enc — Transform to apply during encoding

Returns: A transform_codec wrapping this codec


transformable

template<Derived>
struct transformable

Mixin providing transformation methods (.transform(), .transform_input(), .transform_output())

This mixin provides the following transformation capabilities:

  • .transform(encode_fn, decode_fn): Apply transforms to both directions
  • .transform_input(decode_fn): Only transform during deserialisation
  • .transform_output(encode_fn): Only transform during serialisation

Example:

auto codec = muesli::int32_codec
.transform([](int v) { return v * 2; },      // encode
[](int v) { return v / 2; });     // decode

Member Functions

transform

Applies bidirectional transformation to encode and decode

template<typename EncodeFn, typename DecodeFn> constexpr auto transform(EncodeFn enc, DecodeFn dec) const requires Codec<Derived>

Parameters:

  • enc — Transform to apply during encoding
  • dec — Transform to apply during decoding

Returns: A transform_codec wrapping this codec

transform_input

Transforms only during deserialisation (decode)

template<typename DecodeFn> constexpr auto transform_input(DecodeFn dec) const requires Codec<Derived>

Parameters:

  • dec — Transform to apply during decoding

Returns: A transform_codec wrapping this codec

transform_output

Transforms only during serialisation (encode)

template<typename EncodeFn> constexpr auto transform_output(EncodeFn enc) const requires Codec<Derived>

Parameters:

  • enc — Transform to apply during encoding

Returns: A transform_codec wrapping this codec

Example

auto codec = muesli::int32_codec
    .transform([](int v) { return v * 2; },      // encode
               [](int v) { return v / 2; });     // decode

transform

template<typename EncodeFn, typename DecodeFn> constexpr auto transform(EncodeFn enc, DecodeFn dec) const requires Codec<Derived>

Applies bidirectional transformation to encode and decode

Template Parameters

Parameter Description
EncodeFn Callable(value_type) -> encoded_type
DecodeFn Callable(encoded_type) -> value_type

Parameters

  • enc — Transform to apply during encoding
  • dec — Transform to apply during decoding

Returns: A transform_codec wrapping this codec


transform_input

template<typename DecodeFn> constexpr auto transform_input(DecodeFn dec) const requires Codec<Derived>

Transforms only during deserialisation (decode)

Template Parameters

Parameter Description
DecodeFn Callable(encoded_type) -> value_type

Parameters

  • dec — Transform to apply during decoding

Returns: A transform_codec wrapping this codec


transform_output

template<typename EncodeFn> constexpr auto transform_output(EncodeFn enc) const requires Codec<Derived>

Transforms only during serialisation (encode)

Template Parameters

Parameter Description
EncodeFn Callable(value_type) -> encoded_type

Parameters

  • enc — Transform to apply during encoding

Returns: A transform_codec wrapping this codec


Clone this wiki locally