Skip to content

DiscriminatedBuilder[D: (Equatable[D] val & Stringable val), Msg: Any val]

[Source]

Builder for constructing a Discriminated codec.

Register each variant with case_of, providing the discriminator value, a codec for the variant type, and a narrowing function that casts from Msg to the variant. Duplicate discriminators are ignored (first registration wins). Call build() to produce the Discriminated codec.

class ref DiscriminatedBuilder[D: (Equatable[D] val & Stringable val), Msg: Any val]

Constructors

create

[Source]

new ref create(
  disc_codec: Codec[D] val)
: DiscriminatedBuilder[D, Msg] ref^

Parameters

  • disc_codec: Codec[D] val

Returns


Public Functions

case_of[V: Msg]

[Source]

Register a variant with its discriminator, codec, and narrowing function.

fun ref case_of[V: Msg](
  disc: D,
  codec: Codec[V] val,
  narrow: {(Msg): V ?}[D, Msg, V] val)
: DiscriminatedBuilder[D, Msg] ref

Parameters

  • disc: D
  • codec: Codec[V] val
  • narrow: {(Msg): V ?}[D, Msg, V] val

Returns


build

[Source]

fun ref build()
: Discriminated[D, Msg] val

Returns