trait GenCodec[-A, +B] extends Encoder[A] with Decoder[B]
Generalized codec that allows the type to encode to vary from the type to decode.
- Self Type
- GenCodec[A, B]
- Source
- GenCodec.scala
- Grouped
- Alphabetic
- By Inheritance
- GenCodec
- Decoder
- Encoder
- AnyRef
- Any
- by EnrichedCoproductDecoder
- by EnrichedCoproductEncoder
- by TransformSyntax
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Abstract Value Members
- abstract def decode(bits: BitVector): Attempt[DecodeResult[B]]
Attempts to decode a value of type
A
from the specified bit vector.Attempts to decode a value of type
A
from the specified bit vector.- bits
bits to decode
- returns
error if value could not be decoded or the remaining bits and the decoded value
- Definition Classes
- Decoder
- abstract def encode(value: A): Attempt[BitVector]
Attempts to encode the specified value in to a bit vector.
Attempts to encode the specified value in to a bit vector.
- value
value to encode
- returns
error or binary encoding of the value
- Definition Classes
- Encoder
- abstract def sizeBound: SizeBound
Provides a bound on the size of successfully encoded values.
Provides a bound on the size of successfully encoded values.
- Definition Classes
- Encoder
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- def ->[B](y: B): (GenCodec[A, B], B)
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def as[B](implicit as: Transformer[B, B]): GenCodec[A, B]
Transforms using implicitly available evidence that such a transformation is possible.
Transforms using implicitly available evidence that such a transformation is possible.
Typical transformations include converting:
- an
F[L]
for someL <: HList
to/from anF[CC]
for some case classCC
, where the types in the case class are aligned with the types inL
- an
F[C]
for someC <: Coproduct
to/from anF[SC]
for some sealed classSC
, where the component types in the coproduct are the leaf subtypes of the sealed class.
- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- an
- def asDecoder: Decoder[B]
Gets this as a
Decoder
.Gets this as a
Decoder
.- Definition Classes
- Decoder
- def asEncoder: Encoder[A]
Gets this as an
Encoder
.Gets this as an
Encoder
.- Definition Classes
- Encoder
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws(classOf[java.lang.CloneNotSupportedException])
- def compact: GenCodec[A, B]
Converts this codec to a new codec that compacts the encoded bit vector before returning it.
- def complete: GenCodec[A, B]
Converts this codec to a new codec that fails decoding if there are remaining bits.
- def contramap[C](f: (C) ⇒ A): GenCodec[C, B]
Converts this
GenCodec
to aGenCodec[C, B]
using the suppliedC => A
. - def decodeOnly[AA >: B]: Codec[AA]
Converts this to a codec that fails encoding with an error.
Converts this to a codec that fails encoding with an error.
- Definition Classes
- Decoder
- final def decodeValue(bits: BitVector): Attempt[B]
Attempts to decode a value of type
A
from the specified bit vector and discards the remaining bits.Attempts to decode a value of type
A
from the specified bit vector and discards the remaining bits.- bits
bits to decode
- returns
error if value could not be decoded or the decoded value
- Definition Classes
- Decoder
- def econtramap[C](f: (C) ⇒ Attempt[A]): GenCodec[C, B]
Converts this
GenCodec
to aGenCodec[C, B]
using the suppliedC => Attempt[A]
. - def emap[C](f: (B) ⇒ Attempt[C]): GenCodec[A, C]
Converts this
GenCodec
to aGenCodec[A, C]
using the suppliedB => Attempt[C]
. - def encodeOnly: Codec[A]
Converts this to a codec that fails decoding with an error.
Converts this to a codec that fails decoding with an error.
- Definition Classes
- Encoder
- def ensuring(cond: (GenCodec[A, B]) ⇒ Boolean, msg: ⇒ Any): GenCodec[A, B]
- def ensuring(cond: (GenCodec[A, B]) ⇒ Boolean): GenCodec[A, B]
- def ensuring(cond: Boolean, msg: ⇒ Any): GenCodec[A, B]
- def ensuring(cond: Boolean): GenCodec[A, B]
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def exmap[B](f: (B) ⇒ Attempt[B], g: (B) ⇒ Attempt[B]): GenCodec[A, B]
Transforms using two functions,
A => Attempt[B]
andB => Attempt[A]
.Transforms using two functions,
A => Attempt[B]
andB => Attempt[A]
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- def exmapc[B](f: (B) ⇒ Attempt[B])(g: (B) ⇒ Attempt[B]): GenCodec[A, B]
Curried version of
exmap
.Curried version of
exmap
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- def finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def flatMap[B](f: (B) ⇒ Decoder[B]): Decoder[B]
Converts this decoder to a
Decoder[B]
using the suppliedA => Decoder[B]
.Converts this decoder to a
Decoder[B]
using the suppliedA => Decoder[B]
.- Definition Classes
- Decoder
- def formatted(fmtstr: String): String
- final def fuse[AA <: A, BB >: B](implicit ev: =:=[BB, AA]): Codec[BB]
Converts this generalized codec in to a non-generalized codec assuming
A
andB
are the same type. - final def getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def map[C](f: (B) ⇒ C): GenCodec[A, C]
Converts this
GenCodec
to aGenCodec[A, C]
using the suppliedB => C
. - def narrow[B](f: (B) ⇒ Attempt[B], g: (B) ⇒ B): GenCodec[A, B]
Transforms using two functions,
A => Attempt[B]
andB => A
.Transforms using two functions,
A => Attempt[B]
andB => A
.The supplied functions form an injection from
B
toA
. Hence, this method converts from a larger to a smaller type. Hence, the namenarrow
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- def narrowc[B](f: (B) ⇒ Attempt[B])(g: (B) ⇒ B): GenCodec[A, B]
Curried version of
narrow
.Curried version of
narrow
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def pcontramap[C](f: (C) ⇒ Option[A]): GenCodec[C, B]
Converts this
GenCodec
to aGenCodec[C, B]
using the supplied partial function fromC
toA
. - def selectDecoder[A](implicit sel: Selector[B, A]): Decoder[Option[A]]
When called on a
Decoder[C]
whereC
is a coproduct containing typeA
, converts to aDecoder[Option[A]]
.When called on a
Decoder[C]
whereC
is a coproduct containing typeA
, converts to aDecoder[Option[A]]
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toEnrichedCoproductDecoder[B] performed by method EnrichedCoproductDecoder in scodec.This conversion will take place only if B is a subclass of Coproduct (B <: Coproduct).
- Definition Classes
- EnrichedCoproductDecoder
- def selectEncoder[A](implicit inj: Inject[Coproduct, A]): Encoder[A]
When called on a
Encoder[C]
whereC
is a coproduct containing typeA
, converts to anEncoder[A]
.When called on a
Encoder[C]
whereC
is a coproduct containing typeA
, converts to anEncoder[A]
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toEnrichedCoproductEncoder[Coproduct] performed by method EnrichedCoproductEncoder in scodec.This conversion will take place only if A is a superclass of Coproduct (A >: Coproduct).
- Definition Classes
- EnrichedCoproductEncoder
- final def synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws(classOf[java.lang.InterruptedException])
- def widen[B](f: (B) ⇒ B, g: (B) ⇒ Attempt[B]): GenCodec[A, B]
Transforms using two functions,
A => B
andB => Attempt[A]
.Transforms using two functions,
A => B
andB => Attempt[A]
.The supplied functions form an injection from
A
toB
. Hence, this method converts from a smaller to a larger type. Hence, the namewiden
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- def widenOpt[B](f: (B) ⇒ B, g: (B) ⇒ Option[B]): GenCodec[A, B]
Transforms using two functions,
A => B
andB => Option[A]
.Transforms using two functions,
A => B
andB => Option[A]
.Particularly useful when combined with case class apply/unapply. E.g.,
widenOpt(fa, Foo.apply, Foo.unapply)
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- def widenOptc[B](f: (B) ⇒ B)(g: (B) ⇒ Option[B]): GenCodec[A, B]
Curried version of
widenOpt
.Curried version of
widenOpt
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- def widenc[B](f: (B) ⇒ B)(g: (B) ⇒ Attempt[B]): GenCodec[A, B]
Curried version of
widen
.Curried version of
widen
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- def xmap[B](f: (B) ⇒ B, g: (B) ⇒ B): GenCodec[A, B]
Transforms using the isomorphism described by two functions,
A => B
andB => A
.Transforms using the isomorphism described by two functions,
A => B
andB => A
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- def xmapc[B](f: (B) ⇒ B)(g: (B) ⇒ B): GenCodec[A, B]
Curried version of
xmap
.Curried version of
xmap
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- def →[B](y: B): (GenCodec[A, B], B)
Shadowed Implicit Value Members
- val self: Decoder[B]
- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toEnrichedCoproductDecoder[B] performed by method EnrichedCoproductDecoder in scodec.This conversion will take place only if B is a subclass of Coproduct (B <: Coproduct).
- Shadowing
- This implicitly inherited member is ambiguous. One or more implicitly inherited members have similar signatures, so calling this member may produce an ambiguous implicit conversion compiler error.
To access this member you can use a type ascription:(genCodec: EnrichedCoproductDecoder[B]).self
- Definition Classes
- EnrichedCoproductDecoder
- val self: Encoder[Coproduct]
- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toEnrichedCoproductEncoder[Coproduct] performed by method EnrichedCoproductEncoder in scodec.This conversion will take place only if A is a superclass of Coproduct (A >: Coproduct).
- Shadowing
- This implicitly inherited member is ambiguous. One or more implicitly inherited members have similar signatures, so calling this member may produce an ambiguous implicit conversion compiler error.
To access this member you can use a type ascription:(genCodec: EnrichedCoproductEncoder[Coproduct]).self
- Definition Classes
- EnrichedCoproductEncoder
- val self: GenCodec[A, B]
- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Shadowing
- This implicitly inherited member is ambiguous. One or more implicitly inherited members have similar signatures, so calling this member may produce an ambiguous implicit conversion compiler error.
To access this member you can use a type ascription:(genCodec: TransformSyntax[[+B]GenCodec[A, B], B]).self
- Definition Classes
- TransformSyntax
Deprecated Value Members
- def pxmap[B](f: (B) ⇒ B, g: (B) ⇒ Option[B]): GenCodec[A, B]
Transforms using two functions,
A => B
andB => Option[A]
.Transforms using two functions,
A => B
andB => Option[A]
.Particularly useful when combined with case class apply/unapply. E.g.,
pxmap(fa, Foo.apply, Foo.unapply)
.- Implicit
- This member is added by an implicit conversion from GenCodec[A, B] toTransformSyntax[[+B]GenCodec[A, B], B] performed by method TransformSyntax in scodec.This conversion will take place only if an implicit value of type Transform[[+B]GenCodec[A, B]] is in scope.
- Definition Classes
- TransformSyntax
- Annotations
- @deprecated
- Deprecated
(Since version 1.7.0) Use widenOpt instead