Class/Object

com.rayrobdod.json.builder

CborBuilder

Related Docs: object CborBuilder | package builder

Permalink

final class CborBuilder extends Builder[CborValue, CborValue, Nothing, Seq[Byte]]

A builder whose output is a cbor-formatted byte string.

Regarding numbers

I imagine giving this thing enough key-value pairs will result in an OutOfMemoryError when it tries to create the byte array, but I have yet to go about trying to detect and fast-fail in that situation, or creating a structure that is indistinguishable from a really long byte array

And beyond that, Cbor maps and arrays have a hard size limit of 2 ** 64 - 1 entries, even if the byte array size issue is overcome. Well, assuming they're fixed arrays and not indefinite arrays, but so far this only writes definite-length arrays.

Source
CborBuilder.scala
Version

4.0

Since

3.0

See also

http://tools.ietf.org/html/rfc7049

Linear Supertypes
Type Hierarchy
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. CborBuilder
  2. Builder
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new CborBuilder(forceObject: Boolean = false)

    Permalink

    A builder that will create cbor object format byte strings

    A builder that will create cbor object format byte strings

    forceObject

    true if the builder should create an object even if it is possible to create an array from the inputs

Type Members

  1. type Middle = CborBuilder.Middle

    Permalink

    The type of object while folding.

    The type of object while folding. If Builder weren't so whitebox, this would be a hidden implementation detail.

    Definition Classes
    CborBuilderBuilder
    Since

    4.0

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def apply[Input, PF, BE](folding: Middle, key: CborValue, input: Input, parser: Parser[CborValue, CborValue, PF, BE, Input], extra: BE): ParserRetVal[Middle, Nothing, PF, Nothing, BE]

    Permalink

    Add a key-value pair to folding

    Add a key-value pair to folding

    The key is key, and the value is the result of com.rayrobdod.json.parser.Parser.parse on the provided input.

    folding

    the object to be added to. Must be either the return value of init or the return value of apply

    key

    the key of a key-value pair

    input

    the input to a parser

    parser

    a parser for turning input into a value

    returns

    either a built value or an error value

    Definition Classes
    CborBuilderBuilder
  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  7. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. def finish[BE](extra: BE)(folding: Middle): Complex[Seq[Byte]]

    Permalink

    A function to be called after the folding to produce a result

    A function to be called after the folding to produce a result

    Taking advantage of this method might be useful if either Middle is mutable for performance reasons and Result should be immutable or if the builder needs to use multiple key-value pairs fromt the source to produce some value in the domain object.

    If there is no need to take advantage of this, the implementation of this method can be

    override def finish[BFE](bfe:BFE)(x:Middle) = ParserRetVal.Complex(x)
    folding

    the object to be converted. Must be either the return value of init or the return value of apply

    returns

    either a built value or an error value

    Definition Classes
    CborBuilderBuilder
    Since

    4.0

  11. final def flatMapKey[K2, Err](fun: (K2) ⇒ Either[Err, CborValue]): Builder[K2, CborValue, Either[Err, Nothing], Seq[Byte]]

    Permalink

    Change the type of key that this builder requires, with the option of indicating an error condition

    Change the type of key that this builder requires, with the option of indicating an error condition

    fun

    a conversion function from the new key to this's key

    Definition Classes
    Builder
    Since

    3.1

  12. final def flatMapResult[R2, Err](fun: (Seq[Byte]) ⇒ Either[Err, R2]): Builder[CborValue, CborValue, Either[Err, Nothing], R2]

    Permalink

    Change the type of result produced by this builder, with the option of indicating an error condition

    Change the type of result produced by this builder, with the option of indicating an error condition

    Definition Classes
    Builder
    Since

    4.0

  13. final def flatMapValue[V2, Err](fun: (V2) ⇒ Either[Err, CborValue]): Builder[CborValue, V2, Either[Err, Nothing], Seq[Byte]]

    Permalink

    Change the type of value that this builder requires, with the option of indicating an error condition

    Change the type of value that this builder requires, with the option of indicating an error condition

    Definition Classes
    Builder
    Since

    3.0

  14. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  15. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  16. val init: Middle

    Permalink

    An 'empty' object.

    An 'empty' object. Can be thought of as either the value used at the start of a fold-left operation, or as an object filled with default values.

    Definition Classes
    CborBuilderBuilder
  17. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  18. final def mapFailure[F2](implicit fun: (Nothing) ⇒ F2): Builder[CborValue, CborValue, F2, Seq[Byte]]

    Permalink

    Change the type of failure produced by this builder

    Change the type of failure produced by this builder

    Definition Classes
    Builder
    Since

    4.0

  19. final def mapKey[K2](implicit fun: (K2) ⇒ CborValue): Builder[K2, CborValue, Nothing, Seq[Byte]]

    Permalink

    Change the type of key that this builder requires

    Change the type of key that this builder requires

    fun

    a conversion function from the new key to this's key

    Definition Classes
    Builder
    Since

    3.0

  20. final def mapResult[R2](implicit fun: (Seq[Byte]) ⇒ R2): Builder[CborValue, CborValue, Nothing, R2]

    Permalink

    Change the type of result produced by this builder

    Change the type of result produced by this builder

    Definition Classes
    Builder
    Since

    4.0

  21. final def mapValue[V2](implicit fun: (V2) ⇒ CborValue): Builder[CborValue, V2, Nothing, Seq[Byte]]

    Permalink

    Change the type of value that this builder requires

    Change the type of value that this builder requires

    fun

    a conversion function from the new value to this's value

    Definition Classes
    Builder
    Since

    3.0

  22. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  23. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  24. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  25. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  26. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  27. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  28. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  30. final def zip[K2, V2, F2, R2](that: Builder[K2, V2, F2, R2])(implicit evk: <:<[K2, CborValue], evv: <:<[V2, CborValue], evf: <:<[Nothing, F2]): Builder[K2, V2, F2, (Seq[Byte], R2)]

    Permalink

    Create a Builder which builds two items from the same input.

    Create a Builder which builds two items from the same input. The first item built being the one that this would build, and the second item built being the one that that would build.

    Most useful if the Parser input is neither stable nor resendable - say a network stream.

    that

    the other builder

    Definition Classes
    Builder
    Since

    3.1

Inherited from Builder[CborValue, CborValue, Nothing, Seq[Byte]]

Inherited from AnyRef

Inherited from Any

Ungrouped