Skip to content

Commit 0aafe9a

Browse files
committed
optimize: better inflation logic
1 parent 1cc6bf7 commit 0aafe9a

18 files changed

Lines changed: 285 additions & 297 deletions

mmrpc-definition/src/commonMain/kotlin/compact/CompactArrayDefinition.kt

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,21 @@ fun ArrayDefinition.toCompact(): CompactArrayDefinition {
2727
)
2828
}
2929

30-
fun CompactArrayDefinition.inflate(
30+
fun CompactArrayDefinition.inflateOrNull(
3131
onLookup: (CanonicalName) -> ElementDefinition?,
32-
): () -> ArrayDefinition? {
33-
return it@{
34-
ArrayDefinition(
35-
canonicalName = this.canonical_name,
36-
description = this.description,
37-
metadata = this.metadata.map {
38-
it.inflate(onLookup)() ?: return@it null
39-
},
40-
type = this.type_ref.let {
41-
val item = onLookup(it) ?: return@it null
42-
require(item is TypeDefinition) {
43-
"<array>.type_ref must point to a TypeDefinition"
44-
}
45-
item
32+
): ArrayDefinition? {
33+
return ArrayDefinition(
34+
canonicalName = this.canonical_name,
35+
description = this.description,
36+
metadata = this.metadata.map {
37+
it.inflateOrNull(onLookup)() ?: return null
38+
},
39+
type = this.type_ref.let {
40+
val item = onLookup(it) ?: return null
41+
require(item is TypeDefinition) {
42+
"<array>.type_ref must point to a TypeDefinition"
4643
}
47-
)
48-
}
44+
item
45+
}
46+
)
4947
}

mmrpc-definition/src/commonMain/kotlin/compact/CompactConstDefinition.kt

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,22 @@ fun ConstDefinition.toCompact(): CompactConstDefinition {
2626
)
2727
}
2828

29-
fun CompactConstDefinition.inflate(
29+
fun CompactConstDefinition.inflateOrNull(
3030
onLookup: (CanonicalName) -> ElementDefinition?,
31-
): () -> ConstDefinition? {
32-
return it@{
33-
ConstDefinition(
34-
canonicalName = this.canonical_name,
35-
description = this.description,
36-
metadata = this.metadata.map {
37-
it.inflate(onLookup)() ?: return@it null
38-
},
39-
type = this.type_ref.let {
40-
val item = onLookup(it) ?: return@it null
41-
require(item is TypeDefinition) {
42-
"<const>.type_ref must point to a TypeDefinition"
43-
}
44-
item
45-
},
46-
value = this.value,
47-
)
48-
}
31+
): ConstDefinition? {
32+
return ConstDefinition(
33+
canonicalName = this.canonical_name,
34+
description = this.description,
35+
metadata = this.metadata.map {
36+
it.inflateOrNull(onLookup)() ?: return null
37+
},
38+
type = this.type_ref.let {
39+
val item = onLookup(it) ?: return null
40+
require(item is TypeDefinition) {
41+
"<const>.type_ref must point to a TypeDefinition"
42+
}
43+
item
44+
},
45+
value = this.value,
46+
)
4947
}

mmrpc-definition/src/commonMain/kotlin/compact/CompactElementDefinition.kt

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,23 @@ fun ElementDefinition.toCompact(): CompactElementDefinition {
3434
}
3535
}
3636

37-
fun CompactElementDefinition.inflate(
37+
fun CompactElementDefinition.inflateOrNull(
3838
onLookup: (CanonicalName) -> ElementDefinition?,
39-
): () -> ElementDefinition? {
39+
): ElementDefinition? {
4040
return when (this) {
41-
is CompactArrayDefinition -> inflate(onLookup)
42-
is CompactConstDefinition -> inflate(onLookup)
43-
is CompactEnumDefinition -> inflate(onLookup)
44-
is CompactFaultDefinition -> inflate(onLookup)
45-
is CompactFieldDefinition -> inflate(onLookup)
46-
is CompactInterDefinition -> inflate(onLookup)
47-
is CompactMetadataDefinition -> inflate(onLookup)
48-
is CompactOptionalDefinition -> inflate(onLookup)
49-
is CompactProtocolDefinition -> inflate(onLookup)
50-
is CompactRoutineDefinition -> inflate(onLookup)
51-
is CompactScalarDefinition -> inflate(onLookup)
52-
is CompactStructDefinition -> inflate(onLookup)
53-
is CompactTupleDefinition -> inflate(onLookup)
54-
is CompactUnionDefinition -> inflate(onLookup)
41+
is CompactArrayDefinition -> inflateOrNull(onLookup)
42+
is CompactConstDefinition -> inflateOrNull(onLookup)
43+
is CompactEnumDefinition -> inflateOrNull(onLookup)
44+
is CompactFaultDefinition -> inflateOrNull(onLookup)
45+
is CompactFieldDefinition -> inflateOrNull(onLookup)
46+
is CompactInterDefinition -> inflateOrNull(onLookup)
47+
is CompactMetadataDefinition -> inflateOrNull(onLookup)
48+
is CompactOptionalDefinition -> inflateOrNull(onLookup)
49+
is CompactProtocolDefinition -> inflateOrNull(onLookup)
50+
is CompactRoutineDefinition -> inflateOrNull(onLookup)
51+
is CompactScalarDefinition -> inflateOrNull(onLookup)
52+
is CompactStructDefinition -> inflateOrNull(onLookup)
53+
is CompactTupleDefinition -> inflateOrNull(onLookup)
54+
is CompactUnionDefinition -> inflateOrNull(onLookup)
5555
}
5656
}

mmrpc-definition/src/commonMain/kotlin/compact/CompactEnumDefinition.kt

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,30 +26,28 @@ fun EnumDefinition.toCompact(): CompactEnumDefinition {
2626
)
2727
}
2828

29-
fun CompactEnumDefinition.inflate(
29+
fun CompactEnumDefinition.inflateOrNull(
3030
onLookup: (CanonicalName) -> ElementDefinition?,
31-
): () -> EnumDefinition? {
32-
return it@{
33-
EnumDefinition(
34-
canonicalName = this.canonical_name,
35-
description = this.description,
36-
metadata = this.metadata.map {
37-
it.inflate(onLookup)() ?: return@it null
38-
},
39-
type = this.type_ref.let {
40-
val item = onLookup(it) ?: return@it null
41-
require(item is TypeDefinition) {
42-
"<enum>.type_ref must point to a TypeDefinition"
43-
}
44-
item
45-
},
46-
entries = this.entries_ref.map {
47-
val item = onLookup(it) ?: return@it null
48-
require(item is ConstDefinition) {
49-
"<enum>.entries_ref must point to a ConstDefinition"
50-
}
51-
item
52-
},
53-
)
54-
}
31+
): EnumDefinition? {
32+
return EnumDefinition(
33+
canonicalName = this.canonical_name,
34+
description = this.description,
35+
metadata = this.metadata.map {
36+
it.inflateOrNull(onLookup)() ?: return null
37+
},
38+
type = this.type_ref.let {
39+
val item = onLookup(it) ?: return null
40+
require(item is TypeDefinition) {
41+
"<enum>.type_ref must point to a TypeDefinition"
42+
}
43+
item
44+
},
45+
entries = this.entries_ref.map {
46+
val item = onLookup(it) ?: return null
47+
require(item is ConstDefinition) {
48+
"<enum>.entries_ref must point to a ConstDefinition"
49+
}
50+
item
51+
},
52+
)
5553
}

mmrpc-definition/src/commonMain/kotlin/compact/CompactFaultDefinition.kt

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,14 @@ fun FaultDefinition.toCompact(): CompactFaultDefinition {
2222
)
2323
}
2424

25-
fun CompactFaultDefinition.inflate(
25+
fun CompactFaultDefinition.inflateOrNull(
2626
onLookup: (CanonicalName) -> ElementDefinition?,
27-
): () -> FaultDefinition? {
28-
return it@{
29-
FaultDefinition(
30-
canonicalName = this.canonical_name,
31-
description = this.description,
32-
metadata = this.metadata.map {
33-
it.inflate(onLookup)() ?: return@it null
34-
},
35-
)
36-
}
27+
): FaultDefinition? {
28+
return FaultDefinition(
29+
canonicalName = this.canonical_name,
30+
description = this.description,
31+
metadata = this.metadata.map {
32+
it.inflateOrNull(onLookup)() ?: return null
33+
},
34+
)
3735
}

mmrpc-definition/src/commonMain/kotlin/compact/CompactFieldDefinition.kt

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,22 @@ fun FieldDefinition.toCompact(): CompactFieldDefinition {
2626
)
2727
}
2828

29-
fun CompactFieldDefinition.inflate(
29+
fun CompactFieldDefinition.inflateOrNull(
3030
onLookup: (CanonicalName) -> ElementDefinition?,
31-
): () -> FieldDefinition? {
32-
return it@{
33-
FieldDefinition(
34-
canonicalName = this.canonical_name,
35-
description = this.description,
36-
metadata = this.metadata.map {
37-
it.inflate(onLookup)() ?: return@it null
38-
},
39-
type = this.type_ref.let {
40-
val item = onLookup(it) ?: return@it null
41-
require(item is TypeDefinition) {
42-
"<field>.type_ref must point to a TypeDefinition"
43-
}
44-
item
45-
},
46-
default = this.default
47-
)
48-
}
31+
): FieldDefinition? {
32+
return FieldDefinition(
33+
canonicalName = this.canonical_name,
34+
description = this.description,
35+
metadata = this.metadata.map {
36+
it.inflateOrNull(onLookup)() ?: return null
37+
},
38+
type = this.type_ref.let {
39+
val item = onLookup(it) ?: return null
40+
require(item is TypeDefinition) {
41+
"<field>.type_ref must point to a TypeDefinition"
42+
}
43+
item
44+
},
45+
default = this.default
46+
)
4947
}

mmrpc-definition/src/commonMain/kotlin/compact/CompactFieldDefinitionUsage.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ fun FieldDefinitionUsage.toCompact(): CompactFieldDefinitionUsage {
1717
)
1818
}
1919

20-
fun CompactFieldDefinitionUsage.inflate(
20+
fun CompactFieldDefinitionUsage.inflateOrNull(
2121
onLookup: (CanonicalName) -> ElementDefinition?,
2222
): () -> FieldDefinitionUsage? {
2323
return it@{

mmrpc-definition/src/commonMain/kotlin/compact/CompactInterDefinition.kt

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,21 @@ fun InterDefinition.toCompact(): CompactInterDefinition {
2727
)
2828
}
2929

30-
fun CompactInterDefinition.inflate(
30+
fun CompactInterDefinition.inflateOrNull(
3131
onLookup: (CanonicalName) -> ElementDefinition?,
32-
): () -> InterDefinition? {
33-
return it@{
34-
InterDefinition(
35-
canonicalName = this.canonical_name,
36-
description = this.description,
37-
metadata = this.metadata.map {
38-
it.inflate(onLookup)() ?: return@it null
39-
},
40-
types = this.types_ref.map {
41-
val item = onLookup(it) ?: return@it null
42-
require(item is StructDefinition) {
43-
"<inter>.types_ref must point to a StructDefinition"
44-
}
45-
item
46-
},
47-
)
48-
}
32+
): InterDefinition? {
33+
return InterDefinition(
34+
canonicalName = this.canonical_name,
35+
description = this.description,
36+
metadata = this.metadata.map {
37+
it.inflateOrNull(onLookup)() ?: return null
38+
},
39+
types = this.types_ref.map {
40+
val item = onLookup(it) ?: return null
41+
require(item is StructDefinition) {
42+
"<inter>.types_ref must point to a StructDefinition"
43+
}
44+
item
45+
},
46+
)
4947
}

mmrpc-definition/src/commonMain/kotlin/compact/CompactMetadataDefinition.kt

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,21 @@ fun MetadataDefinition.toCompact(): CompactMetadataDefinition {
2727
)
2828
}
2929

30-
fun CompactMetadataDefinition.inflate(
30+
fun CompactMetadataDefinition.inflateOrNull(
3131
onLookup: (CanonicalName) -> ElementDefinition?,
32-
): () -> MetadataDefinition? {
33-
return it@{
34-
MetadataDefinition(
35-
canonicalName = this.canonical_name,
36-
description = this.description,
37-
metadata = this.metadata.map {
38-
it.inflate(onLookup)() ?: return@it null
39-
},
40-
fields = this.fields_ref.map {
41-
val item = onLookup(it) ?: return@it null
42-
require(item is FieldDefinition) {
43-
"<metadata>.fields_ref must point to a FieldDefinition"
44-
}
45-
item
46-
},
47-
)
48-
}
32+
): MetadataDefinition? {
33+
return MetadataDefinition(
34+
canonicalName = this.canonical_name,
35+
description = this.description,
36+
metadata = this.metadata.map {
37+
it.inflateOrNull(onLookup)() ?: return null
38+
},
39+
fields = this.fields_ref.map {
40+
val item = onLookup(it) ?: return null
41+
require(item is FieldDefinition) {
42+
"<metadata>.fields_ref must point to a FieldDefinition"
43+
}
44+
item
45+
},
46+
)
4947
}

mmrpc-definition/src/commonMain/kotlin/compact/CompactMetadataDefinitionUsage.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ fun MetadataDefinitionUsage.toCompact(): CompactMetadataDefinitionUsage {
2020
)
2121
}
2222

23-
fun CompactMetadataDefinitionUsage.inflate(
23+
fun CompactMetadataDefinitionUsage.inflateOrNull(
2424
onLookup: (CanonicalName) -> ElementDefinition?,
2525
): () -> MetadataDefinitionUsage? {
2626
return it@{
@@ -33,7 +33,7 @@ fun CompactMetadataDefinitionUsage.inflate(
3333
item
3434
},
3535
fields = this.fields.map {
36-
it.inflate(onLookup)() ?: return@it null
36+
it.inflateOrNull(onLookup)() ?: return@it null
3737
}
3838
)
3939
}

0 commit comments

Comments
 (0)