Skip to content

Commit

Permalink
More predictable output order
Browse files Browse the repository at this point in the history
  • Loading branch information
gershnik committed May 3, 2024
1 parent f015bfe commit 896f5e3
Show file tree
Hide file tree
Showing 11 changed files with 38 additions and 33 deletions.
5 changes: 3 additions & 2 deletions jnigen/kprocessor/src/smjni/jnigen/ksp/Generator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ internal class Generator(private val context: Context) {
generateTypeHeader()

val allHeaders = ArrayList<String>()
for (header in context.typeMap.classHeaders) {
for (header in context.typeMap.classHeaders.sorted()) {
if (generateClassHeader(header))
allHeaders.add(header)
}
Expand Down Expand Up @@ -101,7 +101,7 @@ internal class Generator(private val context: Context) {
classHeader.write("//THIS FILE IS AUTO-GENERATED. DO NOT EDIT\n\n")
classHeader.write("#include \"${context.headerName}\"\n\n")

context.typeMap.classesInHeader(header).forEach { classContent ->
context.typeMap.classesInHeader(header).sortedBy { it.cppName }.forEach { classContent ->
if (classContent.javaEntities.isNotEmpty() || classContent.nativeMethods.isNotEmpty())
generateClassDef(classHeader, classContent)
}
Expand Down Expand Up @@ -339,6 +339,7 @@ internal class Generator(private val context: Context) {
context.typeMap.classesInHeader(header)
.filter {it.hasCppClass }
.map { it.cppClassName }
.sorted()
.joinToString(separator = ", \\\n ")})

allHeader.write("\n\n#endif\n")
Expand Down
14 changes: 9 additions & 5 deletions jnigen/processor/src/smjni/jnigen/Generator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ internal class Generator {
generateTypeHeader(typeMap, context)

val allHeaders = ArrayList<String>()
for (header in typeMap.classHeaders) {
for (header in typeMap.classHeaders.sorted()) {
if (generateClassHeader(header, typeMap, context))
allHeaders.add(header)
}
Expand All @@ -55,8 +55,7 @@ internal class Generator {
typeHeader.write("//THIS FILE IS AUTO-GENERATED. DO NOT EDIT\n\n")
typeHeader.write("#include <smjni/smjni.h>\n\n")

val exposedClasses = ArrayList(typeMap.exposedClasses.values)
exposedClasses.sortBy { it.cppName }
val exposedClasses = ArrayList(typeMap.exposedClasses.values).sortedBy { it.cppName }

for (classContent in exposedClasses) {
typeHeader.write("DEFINE_JAVA_TYPE(${classContent.cppName}, \"${classContent.binaryName}\")\n")
Expand Down Expand Up @@ -95,7 +94,7 @@ internal class Generator {
classHeader.write("//THIS FILE IS AUTO-GENERATED. DO NOT EDIT\n\n")
classHeader.write("#include \"${context.headerName}\"\n\n")

typeMap.classesInHeader(header).forEach { classContent ->
typeMap.classesInHeader(header).sortedBy { it.cppName }.forEach { classContent ->
if (classContent.javaEntities.isNotEmpty() || classContent.nativeMethods.isNotEmpty())
generateClassDef(classHeader, classContent)
}
Expand Down Expand Up @@ -329,7 +328,12 @@ internal class Generator {

allHeader.write("\n#define JNIGEN_ALL_GENERATED_CLASSES \\\n ")

allHeader.write(headers.joinToString(separator = ", \\\n ") { header -> typeMap.classesInHeader(header).filter {it.hasCppClass }.map { it.cppClassName }.joinToString(separator = ", \\\n ")})
allHeader.write(headers.joinToString(separator = ", \\\n ") { header ->
typeMap.classesInHeader(header)
.filter {it.hasCppClass }
.map { it.cppClassName }
.sorted()
.joinToString(separator = ", \\\n ")})

allHeader.write("\n\n#endif\n")
}
Expand Down
8 changes: 4 additions & 4 deletions jnigen/test_data/sources/full/kapt-output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ JNIGen: Discovered sources.full_class.input.Types
JNIGen: Discovered Statics
JNIGen: Discovered Middle
JNIGen: Generating type_mapping.h: written
JNIGen: Generating ExposedObject_class.h: written
JNIGen: Generating ExtensionKt_class.h: written
JNIGen: Generating Extension_class.h: written
JNIGen: Generating FileLevelKt_class.h: written
JNIGen: Generating Statics_class.h: written
JNIGen: Generating FullClass_class.h: written
JNIGen: Generating ExtensionKt_class.h: written
JNIGen: Generating Statics_class.h: written
JNIGen: Generating Types_class.h: written
JNIGen: Generating ExposedObject_class.h: written
JNIGen: Generating Extension_class.h: written
JNIGen: Generating all_classes.h: written
JNIGen: Generating outputs.txt: written
18 changes: 9 additions & 9 deletions jnigen/test_data/sources/full/kapt-output/all_classes.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,21 @@

//THIS FILE IS AUTO-GENERATED. DO NOT EDIT

#include "ExposedObject_class.h"
#include "ExtensionKt_class.h"
#include "Extension_class.h"
#include "FileLevelKt_class.h"
#include "Statics_class.h"
#include "FullClass_class.h"
#include "ExtensionKt_class.h"
#include "Statics_class.h"
#include "Types_class.h"
#include "ExposedObject_class.h"
#include "Extension_class.h"

#define JNIGEN_ALL_GENERATED_CLASSES \
ExposedObject_class, \
ExtensionKt_class, \
Extension_class, \
FileLevelKt_class, \
Statics_class, \
FullClass_class, \
ExtensionKt_class, \
Types_class, \
ExposedObject_class, \
Extension_class
Statics_class, \
Types_class

#endif
8 changes: 4 additions & 4 deletions jnigen/test_data/sources/full/kapt-output/outputs.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
type_mapping.h
all_classes.h
ExposedObject_class.h
ExtensionKt_class.h
Extension_class.h
FileLevelKt_class.h
Statics_class.h
FullClass_class.h
ExtensionKt_class.h
Statics_class.h
Types_class.h
ExposedObject_class.h
Extension_class.h
2 changes: 1 addition & 1 deletion jnigen/test_data/sources/full/ksp-output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ JNIGen: Discovered FunkyNames
JNIGen: Discovered Statics
JNIGen: Discovered sources.full_class.input.Types
JNIGen: Generating type_mapping.h: written
JNIGen: Generating ExposedObject_class.h: written
JNIGen: Generating ExtensionKt_class.h: written
JNIGen: Generating Extension_class.h: written
JNIGen: Generating FileLevelKt_class.h: written
JNIGen: Generating ExposedObject_class.h: written
JNIGen: Generating FullClass_class.h: written
JNIGen: Generating FunkyNames_class.h: written
JNIGen: Generating Statics_class.h: written
Expand Down
4 changes: 2 additions & 2 deletions jnigen/test_data/sources/full/ksp-output/all_classes.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@

//THIS FILE IS AUTO-GENERATED. DO NOT EDIT

#include "ExposedObject_class.h"
#include "ExtensionKt_class.h"
#include "Extension_class.h"
#include "FileLevelKt_class.h"
#include "ExposedObject_class.h"
#include "FullClass_class.h"
#include "FunkyNames_class.h"
#include "Statics_class.h"
#include "Types_class.h"

#define JNIGEN_ALL_GENERATED_CLASSES \
ExposedObject_class, \
ExtensionKt_class, \
Extension_class, \
FileLevelKt_class, \
ExposedObject_class, \
FullClass_class, \
FunkyNames_class, \
Statics_class, \
Expand Down
2 changes: 1 addition & 1 deletion jnigen/test_data/sources/full/ksp-output/outputs.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
type_mapping.h
all_classes.h
ExposedObject_class.h
ExtensionKt_class.h
Extension_class.h
FileLevelKt_class.h
ExposedObject_class.h
FullClass_class.h
FunkyNames_class.h
Statics_class.h
Expand Down
2 changes: 1 addition & 1 deletion jnigen/test_data/sources/java/kapt-output.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
JNIGen: Discovered AClass
JNIGen: Discovered AnEnum
JNIGen: Generating type_mapping.h: written
JNIGen: Generating AnEnum_class.h: written
JNIGen: Generating AClass_class.h: written
JNIGen: Generating AnEnum_class.h: written
JNIGen: Generating all_classes.h: written
JNIGen: Generating outputs.txt: written
6 changes: 3 additions & 3 deletions jnigen/test_data/sources/java/kapt-output/all_classes.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

//THIS FILE IS AUTO-GENERATED. DO NOT EDIT

#include "AnEnum_class.h"
#include "AClass_class.h"
#include "AnEnum_class.h"

#define JNIGEN_ALL_GENERATED_CLASSES \
AnEnum_class, \
AClass_class
AClass_class, \
AnEnum_class

#endif
2 changes: 1 addition & 1 deletion jnigen/test_data/sources/java/kapt-output/outputs.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
type_mapping.h
all_classes.h
AnEnum_class.h
AClass_class.h
AnEnum_class.h

0 comments on commit 896f5e3

Please sign in to comment.