-
Notifications
You must be signed in to change notification settings - Fork 68
/
BigStruct.scala
74 lines (68 loc) · 2.97 KB
/
BigStruct.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package smithy4s.example
import smithy4s.Hints
import smithy4s.Schema
import smithy4s.ShapeId
import smithy4s.ShapeTag
import smithy4s.schema.Schema.int
import smithy4s.schema.Schema.string
import smithy4s.schema.Schema.struct
final case class BigStruct(a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int, a7: Int, a8: Int, a9: Int, a10: Int, a11: Int, a12: Int, a13: Int, a14: Int, a15: Int, a16: Int, a17: Int, a18: Int, a19: Int, a20: Int, a21: Int, a22: Int, a24: Int, a23: Option[String] = None)
object BigStruct extends ShapeTag.Companion[BigStruct] {
val id: ShapeId = ShapeId("smithy4s.example", "BigStruct")
val hints: Hints = Hints.empty
// constructor using the original order from the spec
private def make(a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int, a7: Int, a8: Int, a9: Int, a10: Int, a11: Int, a12: Int, a13: Int, a14: Int, a15: Int, a16: Int, a17: Int, a18: Int, a19: Int, a20: Int, a21: Int, a22: Int, a23: Option[String], a24: Int): BigStruct = BigStruct(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a24, a23)
implicit val schema: Schema[BigStruct] = struct.genericArity(
int.required[BigStruct]("a1", _.a1),
int.required[BigStruct]("a2", _.a2),
int.required[BigStruct]("a3", _.a3),
int.required[BigStruct]("a4", _.a4),
int.required[BigStruct]("a5", _.a5),
int.required[BigStruct]("a6", _.a6),
int.required[BigStruct]("a7", _.a7),
int.required[BigStruct]("a8", _.a8),
int.required[BigStruct]("a9", _.a9),
int.required[BigStruct]("a10", _.a10),
int.required[BigStruct]("a11", _.a11),
int.required[BigStruct]("a12", _.a12),
int.required[BigStruct]("a13", _.a13),
int.required[BigStruct]("a14", _.a14),
int.required[BigStruct]("a15", _.a15),
int.required[BigStruct]("a16", _.a16),
int.required[BigStruct]("a17", _.a17),
int.required[BigStruct]("a18", _.a18),
int.required[BigStruct]("a19", _.a19),
int.required[BigStruct]("a20", _.a20),
int.required[BigStruct]("a21", _.a21),
int.required[BigStruct]("a22", _.a22),
string.optional[BigStruct]("a23", _.a23),
int.required[BigStruct]("a24", _.a24),
){
arr => make(
arr(0).asInstanceOf[Int],
arr(1).asInstanceOf[Int],
arr(2).asInstanceOf[Int],
arr(3).asInstanceOf[Int],
arr(4).asInstanceOf[Int],
arr(5).asInstanceOf[Int],
arr(6).asInstanceOf[Int],
arr(7).asInstanceOf[Int],
arr(8).asInstanceOf[Int],
arr(9).asInstanceOf[Int],
arr(10).asInstanceOf[Int],
arr(11).asInstanceOf[Int],
arr(12).asInstanceOf[Int],
arr(13).asInstanceOf[Int],
arr(14).asInstanceOf[Int],
arr(15).asInstanceOf[Int],
arr(16).asInstanceOf[Int],
arr(17).asInstanceOf[Int],
arr(18).asInstanceOf[Int],
arr(19).asInstanceOf[Int],
arr(20).asInstanceOf[Int],
arr(21).asInstanceOf[Int],
arr(22).asInstanceOf[Option[String]],
arr(23).asInstanceOf[Int],
)
}.withId(id).addHints(hints)
}