@@ -93,7 +93,7 @@ class MetaModelGenerator(val outputDir: Path) {
93
93
.addFileComment(headerComment)
94
94
.addType(generateConceptObject(concept))
95
95
.addType(generateConceptWrapperInterface(concept))
96
- .addType(generateConceptWrapperImpl(concept))
96
+ // .addType(generateConceptWrapperImpl(concept))
97
97
.addType(generateNodeWrapperInterface(concept))
98
98
.addType(generateNodeWrapperImpl(concept))
99
99
.apply {
@@ -139,8 +139,8 @@ class MetaModelGenerator(val outputDir: Path) {
139
139
private fun generateConceptObject (concept : LanguageSet .ConceptInLanguage ): TypeSpec {
140
140
return TypeSpec .objectBuilder(concept.conceptObjectName()).apply {
141
141
superclass(GeneratedConcept ::class .asTypeName().parameterizedBy(
142
- concept.nodeWrapperImplType (),
143
- concept.conceptWrapperImplType ()
142
+ concept.nodeWrapperInterfaceType (),
143
+ concept.conceptWrapperInterfaceType ()
144
144
))
145
145
addSuperclassConstructorParameter(" %S" , concept.concept.name)
146
146
addSuperclassConstructorParameter(concept.concept.abstract.toString())
@@ -226,74 +226,40 @@ class MetaModelGenerator(val outputDir: Path) {
226
226
}
227
227
for (feature in concept.directFeatures()) {
228
228
when (val data = feature.data) {
229
- is PropertyData -> addProperty(PropertySpec .builder(feature.validName, GeneratedProperty ::class .asClassName().parameterizedBy(data.asKotlinType())).build())
230
- is ChildLinkData -> addProperty(PropertySpec .builder(feature.validName, feature.generatedChildLinkType()).build())
231
- is ReferenceLinkData -> addProperty(PropertySpec .builder(feature.validName, feature.generatedReferenceLinkType()).build())
229
+ is PropertyData -> addProperty(PropertySpec .builder(feature.validName, GeneratedProperty ::class .asClassName().parameterizedBy(data.asKotlinType()))
230
+ .getter(FunSpec .getterBuilder().addCode(feature.returnKotlinRef()).build())
231
+ .build())
232
+ is ChildLinkData -> addProperty(PropertySpec .builder(feature.validName, feature.generatedChildLinkType())
233
+ .getter(FunSpec .getterBuilder().addCode(feature.returnKotlinRef()).build())
234
+ .build())
235
+ is ReferenceLinkData -> addProperty(PropertySpec .builder(feature.validName, feature.generatedReferenceLinkType())
236
+ .getter(FunSpec .getterBuilder().addCode(feature.returnKotlinRef()).build())
237
+ .build())
232
238
}
233
239
}
234
240
235
241
addType(TypeSpec .companionObjectBuilder().apply {
236
- superclass (concept.conceptWrapperImplType ())
242
+ addSuperinterface (concept.conceptWrapperInterfaceType ())
237
243
val t = if (concept.concept.abstract) IConceptOfTypedNode ::class else INonAbstractConcept ::class
238
244
addSuperinterface(t.asTypeName().parameterizedBy(concept.nodeWrapperInterfaceType()))
239
245
addFunction(FunSpec .builder(IConceptOfTypedNode <* >::getInstanceInterface.name)
240
246
.addModifiers(KModifier .OVERRIDE )
241
247
.returns(KClass ::class .asTypeName().parameterizedBy(concept.nodeWrapperInterfaceType()))
242
248
.addStatement(" return %T::class" , concept.nodeWrapperInterfaceType())
243
249
.build())
250
+ addFunction(FunSpec .builder(ITypedConcept ::untyped.name)
251
+ .returns(IConcept ::class )
252
+ .addModifiers(KModifier .OVERRIDE )
253
+ .addStatement(" return %T" , concept.conceptObjectType())
254
+ .build())
244
255
}.build())
245
256
}.build()
246
257
}
247
258
248
- private fun generateConceptWrapperImpl (concept : LanguageSet .ConceptInLanguage ): TypeSpec {
249
- return TypeSpec .classBuilder(concept.conceptWrapperImplType()).apply {
250
- addModifiers(KModifier .OPEN )
251
- if (concept.extends().isEmpty()) {
252
- } else {
253
- superclass(concept.extends().first().conceptWrapperImplType())
254
- for (extended in concept.extends().drop(1 )) {
255
- addSuperinterface(extended.conceptWrapperInterfaceType(), CodeBlock .of(" %T" , extended.conceptWrapperInterfaceType()))
256
- }
257
- }
258
- addSuperinterface(concept.conceptWrapperInterfaceType())
259
-
260
- primaryConstructor(FunSpec .constructorBuilder().addModifiers(KModifier .PROTECTED ).build())
261
-
262
- addFunction(FunSpec .builder(ITypedConcept ::untyped.name)
263
- .returns(IConcept ::class )
264
- .addModifiers(KModifier .OVERRIDE )
265
- .addStatement(" return %T" , concept.conceptObjectType())
266
- .build())
267
-
268
- for (feature in concept.directFeaturesAndConflicts()) {
269
- when (val data = feature.data) {
270
- is PropertyData -> {
271
- addProperty(PropertySpec .builder(feature.validName, GeneratedProperty ::class .asClassName().parameterizedBy(data.asKotlinType()))
272
- .addModifiers(KModifier .OVERRIDE )
273
- .getter(FunSpec .getterBuilder().addCode(feature.returnKotlinRef()).build())
274
- .build())
275
- }
276
- is ChildLinkData -> {
277
- addProperty(PropertySpec .builder(feature.validName, feature.generatedChildLinkType())
278
- .addModifiers(KModifier .OVERRIDE )
279
- .getter(FunSpec .getterBuilder().addCode(feature.returnKotlinRef()).build())
280
- .build())
281
- }
282
- is ReferenceLinkData -> {
283
- addProperty(PropertySpec .builder(feature.validName, feature.generatedReferenceLinkType())
284
- .addModifiers(KModifier .OVERRIDE )
285
- .getter(FunSpec .getterBuilder().addCode(feature.returnKotlinRef()).build())
286
- .build())
287
- }
288
- }
289
- }
290
- }.build()
291
- }
292
-
293
259
private fun generateNodeWrapperImpl (concept : LanguageSet .ConceptInLanguage ): TypeSpec {
294
260
return TypeSpec .classBuilder(concept.nodeWrapperImplType()).apply {
295
261
addModifiers(KModifier .OPEN )
296
- addProperty(PropertySpec .builder(TypedNodeImpl ::_concept .name, concept.conceptWrapperImplType (), KModifier .OVERRIDE )
262
+ addProperty(PropertySpec .builder(TypedNodeImpl ::_concept .name, concept.conceptWrapperInterfaceType (), KModifier .OVERRIDE )
297
263
.getter(FunSpec .getterBuilder().addStatement(""" return %T""" , concept.conceptWrapperInterfaceType()).build())
298
264
.build())
299
265
@@ -437,7 +403,7 @@ fun PropertyType.asKotlinType(): TypeName {
437
403
}
438
404
}
439
405
fun String.parseClassName () = ClassName (substringBeforeLast(" ." ), substringAfterLast(" ." ))
440
- fun ConceptRef.conceptWrapperImplType () = ClassName (languageName, conceptName.conceptWrapperImplName())
406
+ // fun ConceptRef.conceptWrapperImplType() = ClassName(languageName, conceptName.conceptWrapperImplName())
441
407
fun ConceptRef.conceptWrapperInterfaceType () = ClassName (languageName, conceptName.conceptWrapperInterfaceName())
442
408
fun ConceptRef.nodeWrapperImplType () = ClassName (languageName, conceptName.nodeWrapperImplName())
443
409
fun ConceptRef.nodeWrapperInterfaceType () = ClassName (languageName, conceptName.nodeWrapperInterfaceName())
@@ -469,7 +435,7 @@ fun LanguageSet.ConceptInLanguage.conceptObjectType() = ClassName(language.name,
469
435
fun LanguageSet.ConceptInLanguage.nodeWrapperImplName () = concept.nodeWrapperImplName()
470
436
fun LanguageSet.ConceptInLanguage.nodeWrapperImplType () = ClassName (language.name, concept.nodeWrapperImplName())
471
437
fun LanguageSet.ConceptInLanguage.nodeWrapperInterfaceType () = ClassName (language.name, concept.nodeWrapperInterfaceName())
472
- fun LanguageSet.ConceptInLanguage.conceptWrapperImplType () = ClassName (language.name, concept.conceptWrapperImplName())
438
+ // fun LanguageSet.ConceptInLanguage.conceptWrapperImplType() = ClassName(language.name, concept.conceptWrapperImplName())
473
439
fun LanguageSet.ConceptInLanguage.conceptWrapperInterfaceType () = ClassName (language.name, concept.conceptWrapperInterfaceName())
474
440
475
441
fun FeatureInConcept.kotlinRef () = CodeBlock .of(" %T.%N" , concept.conceptObjectType(), validName)
0 commit comments