
sjsonnew.FlatUnionFormats.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sjson-new-core_2.13 Show documentation
Show all versions of sjson-new-core_2.13 Show documentation
A Scala library for JSON (de)serialization
The newest version!
// auto-generated by sbt-boilerplate
package sjsonnew
import scala.reflect.ClassTag
trait FlatUnionFormats {
private[this] type JF[A] = JsonFormat[A] // simple alias for reduced verbosity
/** *BEWARE*: A1 must be a concrete leaf type, and not an interface. */
def flatUnionFormat1[U, A1 :JF: ClassTag]: JF[U] =
flatUnionFormat1[U, A1]("type")
/** *BEWARE*: A1, A2 must be a concrete leaf type, and not an interface. */
def flatUnionFormat2[U, A1 :JF: ClassTag, A2 :JF: ClassTag]: JF[U] =
flatUnionFormat2[U, A1, A2]("type")
/** *BEWARE*: A1, A2, A3 must be a concrete leaf type, and not an interface. */
def flatUnionFormat3[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag]: JF[U] =
flatUnionFormat3[U, A1, A2, A3]("type")
/** *BEWARE*: A1, A2, A3, A4 must be a concrete leaf type, and not an interface. */
def flatUnionFormat4[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag]: JF[U] =
flatUnionFormat4[U, A1, A2, A3, A4]("type")
/** *BEWARE*: A1, A2, A3, A4, A5 must be a concrete leaf type, and not an interface. */
def flatUnionFormat5[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag]: JF[U] =
flatUnionFormat5[U, A1, A2, A3, A4, A5]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6 must be a concrete leaf type, and not an interface. */
def flatUnionFormat6[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag]: JF[U] =
flatUnionFormat6[U, A1, A2, A3, A4, A5, A6]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7 must be a concrete leaf type, and not an interface. */
def flatUnionFormat7[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag]: JF[U] =
flatUnionFormat7[U, A1, A2, A3, A4, A5, A6, A7]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8 must be a concrete leaf type, and not an interface. */
def flatUnionFormat8[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag]: JF[U] =
flatUnionFormat8[U, A1, A2, A3, A4, A5, A6, A7, A8]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9 must be a concrete leaf type, and not an interface. */
def flatUnionFormat9[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag]: JF[U] =
flatUnionFormat9[U, A1, A2, A3, A4, A5, A6, A7, A8, A9]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 must be a concrete leaf type, and not an interface. */
def flatUnionFormat10[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag]: JF[U] =
flatUnionFormat10[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11 must be a concrete leaf type, and not an interface. */
def flatUnionFormat11[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag]: JF[U] =
flatUnionFormat11[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12 must be a concrete leaf type, and not an interface. */
def flatUnionFormat12[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag]: JF[U] =
flatUnionFormat12[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13 must be a concrete leaf type, and not an interface. */
def flatUnionFormat13[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag]: JF[U] =
flatUnionFormat13[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14 must be a concrete leaf type, and not an interface. */
def flatUnionFormat14[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag]: JF[U] =
flatUnionFormat14[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15 must be a concrete leaf type, and not an interface. */
def flatUnionFormat15[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag]: JF[U] =
flatUnionFormat15[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16 must be a concrete leaf type, and not an interface. */
def flatUnionFormat16[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag]: JF[U] =
flatUnionFormat16[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 must be a concrete leaf type, and not an interface. */
def flatUnionFormat17[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag]: JF[U] =
flatUnionFormat17[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18 must be a concrete leaf type, and not an interface. */
def flatUnionFormat18[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag, A18 :JF: ClassTag]: JF[U] =
flatUnionFormat18[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19 must be a concrete leaf type, and not an interface. */
def flatUnionFormat19[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag, A18 :JF: ClassTag, A19 :JF: ClassTag]: JF[U] =
flatUnionFormat19[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20 must be a concrete leaf type, and not an interface. */
def flatUnionFormat20[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag, A18 :JF: ClassTag, A19 :JF: ClassTag, A20 :JF: ClassTag]: JF[U] =
flatUnionFormat20[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21 must be a concrete leaf type, and not an interface. */
def flatUnionFormat21[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag, A18 :JF: ClassTag, A19 :JF: ClassTag, A20 :JF: ClassTag, A21 :JF: ClassTag]: JF[U] =
flatUnionFormat21[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21]("type")
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22 must be a concrete leaf type, and not an interface. */
def flatUnionFormat22[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag, A18 :JF: ClassTag, A19 :JF: ClassTag, A20 :JF: ClassTag, A21 :JF: ClassTag, A22 :JF: ClassTag]: JF[U] =
flatUnionFormat22[U, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22]("type")
/** *BEWARE*: A1 must be a concrete leaf type, and not an interface. */
def flatUnionFormat1[U, A1 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2 must be a concrete leaf type, and not an interface. */
def flatUnionFormat2[U, A1 :JF: ClassTag, A2 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3 must be a concrete leaf type, and not an interface. */
def flatUnionFormat3[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4 must be a concrete leaf type, and not an interface. */
def flatUnionFormat4[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5 must be a concrete leaf type, and not an interface. */
def flatUnionFormat5[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6 must be a concrete leaf type, and not an interface. */
def flatUnionFormat6[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7 must be a concrete leaf type, and not an interface. */
def flatUnionFormat7[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8 must be a concrete leaf type, and not an interface. */
def flatUnionFormat8[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9 must be a concrete leaf type, and not an interface. */
def flatUnionFormat9[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 must be a concrete leaf type, and not an interface. */
def flatUnionFormat10[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11 must be a concrete leaf type, and not an interface. */
def flatUnionFormat11[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12 must be a concrete leaf type, and not an interface. */
def flatUnionFormat12[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a12Format = implicitly[JF[A12]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
lazy val a12Name = className(implicitly[ClassTag[A12]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
case x if implicitly[ClassTag[A12]].runtimeClass == x.getClass => a12Format.write(x.asInstanceOf[A12], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
case x if a12Name == x => a12Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13 must be a concrete leaf type, and not an interface. */
def flatUnionFormat13[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a12Format = implicitly[JF[A12]]
lazy val a13Format = implicitly[JF[A13]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
lazy val a12Name = className(implicitly[ClassTag[A12]].runtimeClass)
lazy val a13Name = className(implicitly[ClassTag[A13]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
case x if implicitly[ClassTag[A12]].runtimeClass == x.getClass => a12Format.write(x.asInstanceOf[A12], builder)
case x if implicitly[ClassTag[A13]].runtimeClass == x.getClass => a13Format.write(x.asInstanceOf[A13], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
case x if a12Name == x => a12Format.read(Some(js), unbuilder)
case x if a13Name == x => a13Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14 must be a concrete leaf type, and not an interface. */
def flatUnionFormat14[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a12Format = implicitly[JF[A12]]
lazy val a13Format = implicitly[JF[A13]]
lazy val a14Format = implicitly[JF[A14]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
lazy val a12Name = className(implicitly[ClassTag[A12]].runtimeClass)
lazy val a13Name = className(implicitly[ClassTag[A13]].runtimeClass)
lazy val a14Name = className(implicitly[ClassTag[A14]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
case x if implicitly[ClassTag[A12]].runtimeClass == x.getClass => a12Format.write(x.asInstanceOf[A12], builder)
case x if implicitly[ClassTag[A13]].runtimeClass == x.getClass => a13Format.write(x.asInstanceOf[A13], builder)
case x if implicitly[ClassTag[A14]].runtimeClass == x.getClass => a14Format.write(x.asInstanceOf[A14], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
case x if a12Name == x => a12Format.read(Some(js), unbuilder)
case x if a13Name == x => a13Format.read(Some(js), unbuilder)
case x if a14Name == x => a14Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15 must be a concrete leaf type, and not an interface. */
def flatUnionFormat15[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a12Format = implicitly[JF[A12]]
lazy val a13Format = implicitly[JF[A13]]
lazy val a14Format = implicitly[JF[A14]]
lazy val a15Format = implicitly[JF[A15]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
lazy val a12Name = className(implicitly[ClassTag[A12]].runtimeClass)
lazy val a13Name = className(implicitly[ClassTag[A13]].runtimeClass)
lazy val a14Name = className(implicitly[ClassTag[A14]].runtimeClass)
lazy val a15Name = className(implicitly[ClassTag[A15]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
case x if implicitly[ClassTag[A12]].runtimeClass == x.getClass => a12Format.write(x.asInstanceOf[A12], builder)
case x if implicitly[ClassTag[A13]].runtimeClass == x.getClass => a13Format.write(x.asInstanceOf[A13], builder)
case x if implicitly[ClassTag[A14]].runtimeClass == x.getClass => a14Format.write(x.asInstanceOf[A14], builder)
case x if implicitly[ClassTag[A15]].runtimeClass == x.getClass => a15Format.write(x.asInstanceOf[A15], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
case x if a12Name == x => a12Format.read(Some(js), unbuilder)
case x if a13Name == x => a13Format.read(Some(js), unbuilder)
case x if a14Name == x => a14Format.read(Some(js), unbuilder)
case x if a15Name == x => a15Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16 must be a concrete leaf type, and not an interface. */
def flatUnionFormat16[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a12Format = implicitly[JF[A12]]
lazy val a13Format = implicitly[JF[A13]]
lazy val a14Format = implicitly[JF[A14]]
lazy val a15Format = implicitly[JF[A15]]
lazy val a16Format = implicitly[JF[A16]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
lazy val a12Name = className(implicitly[ClassTag[A12]].runtimeClass)
lazy val a13Name = className(implicitly[ClassTag[A13]].runtimeClass)
lazy val a14Name = className(implicitly[ClassTag[A14]].runtimeClass)
lazy val a15Name = className(implicitly[ClassTag[A15]].runtimeClass)
lazy val a16Name = className(implicitly[ClassTag[A16]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
case x if implicitly[ClassTag[A12]].runtimeClass == x.getClass => a12Format.write(x.asInstanceOf[A12], builder)
case x if implicitly[ClassTag[A13]].runtimeClass == x.getClass => a13Format.write(x.asInstanceOf[A13], builder)
case x if implicitly[ClassTag[A14]].runtimeClass == x.getClass => a14Format.write(x.asInstanceOf[A14], builder)
case x if implicitly[ClassTag[A15]].runtimeClass == x.getClass => a15Format.write(x.asInstanceOf[A15], builder)
case x if implicitly[ClassTag[A16]].runtimeClass == x.getClass => a16Format.write(x.asInstanceOf[A16], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
case x if a12Name == x => a12Format.read(Some(js), unbuilder)
case x if a13Name == x => a13Format.read(Some(js), unbuilder)
case x if a14Name == x => a14Format.read(Some(js), unbuilder)
case x if a15Name == x => a15Format.read(Some(js), unbuilder)
case x if a16Name == x => a16Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 must be a concrete leaf type, and not an interface. */
def flatUnionFormat17[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a12Format = implicitly[JF[A12]]
lazy val a13Format = implicitly[JF[A13]]
lazy val a14Format = implicitly[JF[A14]]
lazy val a15Format = implicitly[JF[A15]]
lazy val a16Format = implicitly[JF[A16]]
lazy val a17Format = implicitly[JF[A17]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
lazy val a12Name = className(implicitly[ClassTag[A12]].runtimeClass)
lazy val a13Name = className(implicitly[ClassTag[A13]].runtimeClass)
lazy val a14Name = className(implicitly[ClassTag[A14]].runtimeClass)
lazy val a15Name = className(implicitly[ClassTag[A15]].runtimeClass)
lazy val a16Name = className(implicitly[ClassTag[A16]].runtimeClass)
lazy val a17Name = className(implicitly[ClassTag[A17]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
case x if implicitly[ClassTag[A12]].runtimeClass == x.getClass => a12Format.write(x.asInstanceOf[A12], builder)
case x if implicitly[ClassTag[A13]].runtimeClass == x.getClass => a13Format.write(x.asInstanceOf[A13], builder)
case x if implicitly[ClassTag[A14]].runtimeClass == x.getClass => a14Format.write(x.asInstanceOf[A14], builder)
case x if implicitly[ClassTag[A15]].runtimeClass == x.getClass => a15Format.write(x.asInstanceOf[A15], builder)
case x if implicitly[ClassTag[A16]].runtimeClass == x.getClass => a16Format.write(x.asInstanceOf[A16], builder)
case x if implicitly[ClassTag[A17]].runtimeClass == x.getClass => a17Format.write(x.asInstanceOf[A17], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
case x if a12Name == x => a12Format.read(Some(js), unbuilder)
case x if a13Name == x => a13Format.read(Some(js), unbuilder)
case x if a14Name == x => a14Format.read(Some(js), unbuilder)
case x if a15Name == x => a15Format.read(Some(js), unbuilder)
case x if a16Name == x => a16Format.read(Some(js), unbuilder)
case x if a17Name == x => a17Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18 must be a concrete leaf type, and not an interface. */
def flatUnionFormat18[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag, A18 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a12Format = implicitly[JF[A12]]
lazy val a13Format = implicitly[JF[A13]]
lazy val a14Format = implicitly[JF[A14]]
lazy val a15Format = implicitly[JF[A15]]
lazy val a16Format = implicitly[JF[A16]]
lazy val a17Format = implicitly[JF[A17]]
lazy val a18Format = implicitly[JF[A18]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
lazy val a12Name = className(implicitly[ClassTag[A12]].runtimeClass)
lazy val a13Name = className(implicitly[ClassTag[A13]].runtimeClass)
lazy val a14Name = className(implicitly[ClassTag[A14]].runtimeClass)
lazy val a15Name = className(implicitly[ClassTag[A15]].runtimeClass)
lazy val a16Name = className(implicitly[ClassTag[A16]].runtimeClass)
lazy val a17Name = className(implicitly[ClassTag[A17]].runtimeClass)
lazy val a18Name = className(implicitly[ClassTag[A18]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
case x if implicitly[ClassTag[A12]].runtimeClass == x.getClass => a12Format.write(x.asInstanceOf[A12], builder)
case x if implicitly[ClassTag[A13]].runtimeClass == x.getClass => a13Format.write(x.asInstanceOf[A13], builder)
case x if implicitly[ClassTag[A14]].runtimeClass == x.getClass => a14Format.write(x.asInstanceOf[A14], builder)
case x if implicitly[ClassTag[A15]].runtimeClass == x.getClass => a15Format.write(x.asInstanceOf[A15], builder)
case x if implicitly[ClassTag[A16]].runtimeClass == x.getClass => a16Format.write(x.asInstanceOf[A16], builder)
case x if implicitly[ClassTag[A17]].runtimeClass == x.getClass => a17Format.write(x.asInstanceOf[A17], builder)
case x if implicitly[ClassTag[A18]].runtimeClass == x.getClass => a18Format.write(x.asInstanceOf[A18], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
case x if a12Name == x => a12Format.read(Some(js), unbuilder)
case x if a13Name == x => a13Format.read(Some(js), unbuilder)
case x if a14Name == x => a14Format.read(Some(js), unbuilder)
case x if a15Name == x => a15Format.read(Some(js), unbuilder)
case x if a16Name == x => a16Format.read(Some(js), unbuilder)
case x if a17Name == x => a17Format.read(Some(js), unbuilder)
case x if a18Name == x => a18Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19 must be a concrete leaf type, and not an interface. */
def flatUnionFormat19[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag, A18 :JF: ClassTag, A19 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a12Format = implicitly[JF[A12]]
lazy val a13Format = implicitly[JF[A13]]
lazy val a14Format = implicitly[JF[A14]]
lazy val a15Format = implicitly[JF[A15]]
lazy val a16Format = implicitly[JF[A16]]
lazy val a17Format = implicitly[JF[A17]]
lazy val a18Format = implicitly[JF[A18]]
lazy val a19Format = implicitly[JF[A19]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
lazy val a12Name = className(implicitly[ClassTag[A12]].runtimeClass)
lazy val a13Name = className(implicitly[ClassTag[A13]].runtimeClass)
lazy val a14Name = className(implicitly[ClassTag[A14]].runtimeClass)
lazy val a15Name = className(implicitly[ClassTag[A15]].runtimeClass)
lazy val a16Name = className(implicitly[ClassTag[A16]].runtimeClass)
lazy val a17Name = className(implicitly[ClassTag[A17]].runtimeClass)
lazy val a18Name = className(implicitly[ClassTag[A18]].runtimeClass)
lazy val a19Name = className(implicitly[ClassTag[A19]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
case x if implicitly[ClassTag[A12]].runtimeClass == x.getClass => a12Format.write(x.asInstanceOf[A12], builder)
case x if implicitly[ClassTag[A13]].runtimeClass == x.getClass => a13Format.write(x.asInstanceOf[A13], builder)
case x if implicitly[ClassTag[A14]].runtimeClass == x.getClass => a14Format.write(x.asInstanceOf[A14], builder)
case x if implicitly[ClassTag[A15]].runtimeClass == x.getClass => a15Format.write(x.asInstanceOf[A15], builder)
case x if implicitly[ClassTag[A16]].runtimeClass == x.getClass => a16Format.write(x.asInstanceOf[A16], builder)
case x if implicitly[ClassTag[A17]].runtimeClass == x.getClass => a17Format.write(x.asInstanceOf[A17], builder)
case x if implicitly[ClassTag[A18]].runtimeClass == x.getClass => a18Format.write(x.asInstanceOf[A18], builder)
case x if implicitly[ClassTag[A19]].runtimeClass == x.getClass => a19Format.write(x.asInstanceOf[A19], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
case x if a12Name == x => a12Format.read(Some(js), unbuilder)
case x if a13Name == x => a13Format.read(Some(js), unbuilder)
case x if a14Name == x => a14Format.read(Some(js), unbuilder)
case x if a15Name == x => a15Format.read(Some(js), unbuilder)
case x if a16Name == x => a16Format.read(Some(js), unbuilder)
case x if a17Name == x => a17Format.read(Some(js), unbuilder)
case x if a18Name == x => a18Format.read(Some(js), unbuilder)
case x if a19Name == x => a19Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20 must be a concrete leaf type, and not an interface. */
def flatUnionFormat20[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag, A18 :JF: ClassTag, A19 :JF: ClassTag, A20 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a12Format = implicitly[JF[A12]]
lazy val a13Format = implicitly[JF[A13]]
lazy val a14Format = implicitly[JF[A14]]
lazy val a15Format = implicitly[JF[A15]]
lazy val a16Format = implicitly[JF[A16]]
lazy val a17Format = implicitly[JF[A17]]
lazy val a18Format = implicitly[JF[A18]]
lazy val a19Format = implicitly[JF[A19]]
lazy val a20Format = implicitly[JF[A20]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
lazy val a12Name = className(implicitly[ClassTag[A12]].runtimeClass)
lazy val a13Name = className(implicitly[ClassTag[A13]].runtimeClass)
lazy val a14Name = className(implicitly[ClassTag[A14]].runtimeClass)
lazy val a15Name = className(implicitly[ClassTag[A15]].runtimeClass)
lazy val a16Name = className(implicitly[ClassTag[A16]].runtimeClass)
lazy val a17Name = className(implicitly[ClassTag[A17]].runtimeClass)
lazy val a18Name = className(implicitly[ClassTag[A18]].runtimeClass)
lazy val a19Name = className(implicitly[ClassTag[A19]].runtimeClass)
lazy val a20Name = className(implicitly[ClassTag[A20]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
case x if implicitly[ClassTag[A12]].runtimeClass == x.getClass => a12Format.write(x.asInstanceOf[A12], builder)
case x if implicitly[ClassTag[A13]].runtimeClass == x.getClass => a13Format.write(x.asInstanceOf[A13], builder)
case x if implicitly[ClassTag[A14]].runtimeClass == x.getClass => a14Format.write(x.asInstanceOf[A14], builder)
case x if implicitly[ClassTag[A15]].runtimeClass == x.getClass => a15Format.write(x.asInstanceOf[A15], builder)
case x if implicitly[ClassTag[A16]].runtimeClass == x.getClass => a16Format.write(x.asInstanceOf[A16], builder)
case x if implicitly[ClassTag[A17]].runtimeClass == x.getClass => a17Format.write(x.asInstanceOf[A17], builder)
case x if implicitly[ClassTag[A18]].runtimeClass == x.getClass => a18Format.write(x.asInstanceOf[A18], builder)
case x if implicitly[ClassTag[A19]].runtimeClass == x.getClass => a19Format.write(x.asInstanceOf[A19], builder)
case x if implicitly[ClassTag[A20]].runtimeClass == x.getClass => a20Format.write(x.asInstanceOf[A20], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
case x if a12Name == x => a12Format.read(Some(js), unbuilder)
case x if a13Name == x => a13Format.read(Some(js), unbuilder)
case x if a14Name == x => a14Format.read(Some(js), unbuilder)
case x if a15Name == x => a15Format.read(Some(js), unbuilder)
case x if a16Name == x => a16Format.read(Some(js), unbuilder)
case x if a17Name == x => a17Format.read(Some(js), unbuilder)
case x if a18Name == x => a18Format.read(Some(js), unbuilder)
case x if a19Name == x => a19Format.read(Some(js), unbuilder)
case x if a20Name == x => a20Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21 must be a concrete leaf type, and not an interface. */
def flatUnionFormat21[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag, A18 :JF: ClassTag, A19 :JF: ClassTag, A20 :JF: ClassTag, A21 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a12Format = implicitly[JF[A12]]
lazy val a13Format = implicitly[JF[A13]]
lazy val a14Format = implicitly[JF[A14]]
lazy val a15Format = implicitly[JF[A15]]
lazy val a16Format = implicitly[JF[A16]]
lazy val a17Format = implicitly[JF[A17]]
lazy val a18Format = implicitly[JF[A18]]
lazy val a19Format = implicitly[JF[A19]]
lazy val a20Format = implicitly[JF[A20]]
lazy val a21Format = implicitly[JF[A21]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
lazy val a12Name = className(implicitly[ClassTag[A12]].runtimeClass)
lazy val a13Name = className(implicitly[ClassTag[A13]].runtimeClass)
lazy val a14Name = className(implicitly[ClassTag[A14]].runtimeClass)
lazy val a15Name = className(implicitly[ClassTag[A15]].runtimeClass)
lazy val a16Name = className(implicitly[ClassTag[A16]].runtimeClass)
lazy val a17Name = className(implicitly[ClassTag[A17]].runtimeClass)
lazy val a18Name = className(implicitly[ClassTag[A18]].runtimeClass)
lazy val a19Name = className(implicitly[ClassTag[A19]].runtimeClass)
lazy val a20Name = className(implicitly[ClassTag[A20]].runtimeClass)
lazy val a21Name = className(implicitly[ClassTag[A21]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
case x if implicitly[ClassTag[A12]].runtimeClass == x.getClass => a12Format.write(x.asInstanceOf[A12], builder)
case x if implicitly[ClassTag[A13]].runtimeClass == x.getClass => a13Format.write(x.asInstanceOf[A13], builder)
case x if implicitly[ClassTag[A14]].runtimeClass == x.getClass => a14Format.write(x.asInstanceOf[A14], builder)
case x if implicitly[ClassTag[A15]].runtimeClass == x.getClass => a15Format.write(x.asInstanceOf[A15], builder)
case x if implicitly[ClassTag[A16]].runtimeClass == x.getClass => a16Format.write(x.asInstanceOf[A16], builder)
case x if implicitly[ClassTag[A17]].runtimeClass == x.getClass => a17Format.write(x.asInstanceOf[A17], builder)
case x if implicitly[ClassTag[A18]].runtimeClass == x.getClass => a18Format.write(x.asInstanceOf[A18], builder)
case x if implicitly[ClassTag[A19]].runtimeClass == x.getClass => a19Format.write(x.asInstanceOf[A19], builder)
case x if implicitly[ClassTag[A20]].runtimeClass == x.getClass => a20Format.write(x.asInstanceOf[A20], builder)
case x if implicitly[ClassTag[A21]].runtimeClass == x.getClass => a21Format.write(x.asInstanceOf[A21], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
case x if a12Name == x => a12Format.read(Some(js), unbuilder)
case x if a13Name == x => a13Format.read(Some(js), unbuilder)
case x if a14Name == x => a14Format.read(Some(js), unbuilder)
case x if a15Name == x => a15Format.read(Some(js), unbuilder)
case x if a16Name == x => a16Format.read(Some(js), unbuilder)
case x if a17Name == x => a17Format.read(Some(js), unbuilder)
case x if a18Name == x => a18Format.read(Some(js), unbuilder)
case x if a19Name == x => a19Format.read(Some(js), unbuilder)
case x if a20Name == x => a20Format.read(Some(js), unbuilder)
case x if a21Name == x => a21Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
/** *BEWARE*: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22 must be a concrete leaf type, and not an interface. */
def flatUnionFormat22[U, A1 :JF: ClassTag, A2 :JF: ClassTag, A3 :JF: ClassTag, A4 :JF: ClassTag, A5 :JF: ClassTag, A6 :JF: ClassTag, A7 :JF: ClassTag, A8 :JF: ClassTag, A9 :JF: ClassTag, A10 :JF: ClassTag, A11 :JF: ClassTag, A12 :JF: ClassTag, A13 :JF: ClassTag, A14 :JF: ClassTag, A15 :JF: ClassTag, A16 :JF: ClassTag, A17 :JF: ClassTag, A18 :JF: ClassTag, A19 :JF: ClassTag, A20 :JF: ClassTag, A21 :JF: ClassTag, A22 :JF: ClassTag](typeFieldName: String): JF[U] = new JF[U] {
lazy val a1Format = implicitly[JF[A1]]
lazy val a2Format = implicitly[JF[A2]]
lazy val a3Format = implicitly[JF[A3]]
lazy val a4Format = implicitly[JF[A4]]
lazy val a5Format = implicitly[JF[A5]]
lazy val a6Format = implicitly[JF[A6]]
lazy val a7Format = implicitly[JF[A7]]
lazy val a8Format = implicitly[JF[A8]]
lazy val a9Format = implicitly[JF[A9]]
lazy val a10Format = implicitly[JF[A10]]
lazy val a11Format = implicitly[JF[A11]]
lazy val a12Format = implicitly[JF[A12]]
lazy val a13Format = implicitly[JF[A13]]
lazy val a14Format = implicitly[JF[A14]]
lazy val a15Format = implicitly[JF[A15]]
lazy val a16Format = implicitly[JF[A16]]
lazy val a17Format = implicitly[JF[A17]]
lazy val a18Format = implicitly[JF[A18]]
lazy val a19Format = implicitly[JF[A19]]
lazy val a20Format = implicitly[JF[A20]]
lazy val a21Format = implicitly[JF[A21]]
lazy val a22Format = implicitly[JF[A22]]
lazy val a1Name = className(implicitly[ClassTag[A1]].runtimeClass)
lazy val a2Name = className(implicitly[ClassTag[A2]].runtimeClass)
lazy val a3Name = className(implicitly[ClassTag[A3]].runtimeClass)
lazy val a4Name = className(implicitly[ClassTag[A4]].runtimeClass)
lazy val a5Name = className(implicitly[ClassTag[A5]].runtimeClass)
lazy val a6Name = className(implicitly[ClassTag[A6]].runtimeClass)
lazy val a7Name = className(implicitly[ClassTag[A7]].runtimeClass)
lazy val a8Name = className(implicitly[ClassTag[A8]].runtimeClass)
lazy val a9Name = className(implicitly[ClassTag[A9]].runtimeClass)
lazy val a10Name = className(implicitly[ClassTag[A10]].runtimeClass)
lazy val a11Name = className(implicitly[ClassTag[A11]].runtimeClass)
lazy val a12Name = className(implicitly[ClassTag[A12]].runtimeClass)
lazy val a13Name = className(implicitly[ClassTag[A13]].runtimeClass)
lazy val a14Name = className(implicitly[ClassTag[A14]].runtimeClass)
lazy val a15Name = className(implicitly[ClassTag[A15]].runtimeClass)
lazy val a16Name = className(implicitly[ClassTag[A16]].runtimeClass)
lazy val a17Name = className(implicitly[ClassTag[A17]].runtimeClass)
lazy val a18Name = className(implicitly[ClassTag[A18]].runtimeClass)
lazy val a19Name = className(implicitly[ClassTag[A19]].runtimeClass)
lazy val a20Name = className(implicitly[ClassTag[A20]].runtimeClass)
lazy val a21Name = className(implicitly[ClassTag[A21]].runtimeClass)
lazy val a22Name = className(implicitly[ClassTag[A22]].runtimeClass)
def write[J](u: U, builder: Builder[J]): Unit = {
builder.beginPreObject()
builder.addFieldName(typeFieldName)
builder.writeString(className(u.getClass))
builder.endPreObject()
u match {
case x if implicitly[ClassTag[A1]].runtimeClass == x.getClass => a1Format.write(x.asInstanceOf[A1], builder)
case x if implicitly[ClassTag[A2]].runtimeClass == x.getClass => a2Format.write(x.asInstanceOf[A2], builder)
case x if implicitly[ClassTag[A3]].runtimeClass == x.getClass => a3Format.write(x.asInstanceOf[A3], builder)
case x if implicitly[ClassTag[A4]].runtimeClass == x.getClass => a4Format.write(x.asInstanceOf[A4], builder)
case x if implicitly[ClassTag[A5]].runtimeClass == x.getClass => a5Format.write(x.asInstanceOf[A5], builder)
case x if implicitly[ClassTag[A6]].runtimeClass == x.getClass => a6Format.write(x.asInstanceOf[A6], builder)
case x if implicitly[ClassTag[A7]].runtimeClass == x.getClass => a7Format.write(x.asInstanceOf[A7], builder)
case x if implicitly[ClassTag[A8]].runtimeClass == x.getClass => a8Format.write(x.asInstanceOf[A8], builder)
case x if implicitly[ClassTag[A9]].runtimeClass == x.getClass => a9Format.write(x.asInstanceOf[A9], builder)
case x if implicitly[ClassTag[A10]].runtimeClass == x.getClass => a10Format.write(x.asInstanceOf[A10], builder)
case x if implicitly[ClassTag[A11]].runtimeClass == x.getClass => a11Format.write(x.asInstanceOf[A11], builder)
case x if implicitly[ClassTag[A12]].runtimeClass == x.getClass => a12Format.write(x.asInstanceOf[A12], builder)
case x if implicitly[ClassTag[A13]].runtimeClass == x.getClass => a13Format.write(x.asInstanceOf[A13], builder)
case x if implicitly[ClassTag[A14]].runtimeClass == x.getClass => a14Format.write(x.asInstanceOf[A14], builder)
case x if implicitly[ClassTag[A15]].runtimeClass == x.getClass => a15Format.write(x.asInstanceOf[A15], builder)
case x if implicitly[ClassTag[A16]].runtimeClass == x.getClass => a16Format.write(x.asInstanceOf[A16], builder)
case x if implicitly[ClassTag[A17]].runtimeClass == x.getClass => a17Format.write(x.asInstanceOf[A17], builder)
case x if implicitly[ClassTag[A18]].runtimeClass == x.getClass => a18Format.write(x.asInstanceOf[A18], builder)
case x if implicitly[ClassTag[A19]].runtimeClass == x.getClass => a19Format.write(x.asInstanceOf[A19], builder)
case x if implicitly[ClassTag[A20]].runtimeClass == x.getClass => a20Format.write(x.asInstanceOf[A20], builder)
case x if implicitly[ClassTag[A21]].runtimeClass == x.getClass => a21Format.write(x.asInstanceOf[A21], builder)
case x if implicitly[ClassTag[A22]].runtimeClass == x.getClass => a22Format.write(x.asInstanceOf[A22], builder)
}
}
def read[J](jsOpt: Option[J], unbuilder: Unbuilder[J]): U =
jsOpt match {
case Some(js) =>
unbuilder.beginPreObject(js)
val typeName = unbuilder.lookupField(typeFieldName) match {
case Some(x) => unbuilder.readString(x)
case None => deserializationError("Field not found: $type")
}
unbuilder.endPreObject()
val value = typeName match {
case x if a1Name == x => a1Format.read(Some(js), unbuilder)
case x if a2Name == x => a2Format.read(Some(js), unbuilder)
case x if a3Name == x => a3Format.read(Some(js), unbuilder)
case x if a4Name == x => a4Format.read(Some(js), unbuilder)
case x if a5Name == x => a5Format.read(Some(js), unbuilder)
case x if a6Name == x => a6Format.read(Some(js), unbuilder)
case x if a7Name == x => a7Format.read(Some(js), unbuilder)
case x if a8Name == x => a8Format.read(Some(js), unbuilder)
case x if a9Name == x => a9Format.read(Some(js), unbuilder)
case x if a10Name == x => a10Format.read(Some(js), unbuilder)
case x if a11Name == x => a11Format.read(Some(js), unbuilder)
case x if a12Name == x => a12Format.read(Some(js), unbuilder)
case x if a13Name == x => a13Format.read(Some(js), unbuilder)
case x if a14Name == x => a14Format.read(Some(js), unbuilder)
case x if a15Name == x => a15Format.read(Some(js), unbuilder)
case x if a16Name == x => a16Format.read(Some(js), unbuilder)
case x if a17Name == x => a17Format.read(Some(js), unbuilder)
case x if a18Name == x => a18Format.read(Some(js), unbuilder)
case x if a19Name == x => a19Format.read(Some(js), unbuilder)
case x if a20Name == x => a20Format.read(Some(js), unbuilder)
case x if a21Name == x => a21Format.read(Some(js), unbuilder)
case x if a22Name == x => a22Format.read(Some(js), unbuilder)
}
value match { case u: U @unchecked => u }
case None => deserializationError("Expected union JsObject, but got None")
}
}
private def className[A](c: Class[A]): String =
try {
c.getSimpleName
} catch {
case e: InternalError => c.getName
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy