xref: /aosp_15_r20/external/kotlinx.serialization/guide/example/example-formats-10.kt (revision 57b5a4a64c534cf7f27ac9427ceab07f3d8ed3d8)
1*57b5a4a6SAndroid Build Coastguard Worker // This file was automatically generated from formats.md by Knit tool. Do not edit.
2*57b5a4a6SAndroid Build Coastguard Worker package example.exampleFormats10
3*57b5a4a6SAndroid Build Coastguard Worker 
4*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.serialization.*
5*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.serialization.descriptors.*
6*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.serialization.encoding.*
7*57b5a4a6SAndroid Build Coastguard Worker import kotlinx.serialization.modules.*
8*57b5a4a6SAndroid Build Coastguard Worker 
9*57b5a4a6SAndroid Build Coastguard Worker class ListEncoder : AbstractEncoder() {
10*57b5a4a6SAndroid Build Coastguard Worker     val list = mutableListOf<Any>()
11*57b5a4a6SAndroid Build Coastguard Worker 
12*57b5a4a6SAndroid Build Coastguard Worker     override val serializersModule: SerializersModule = EmptySerializersModule()
13*57b5a4a6SAndroid Build Coastguard Worker 
encodeValuenull14*57b5a4a6SAndroid Build Coastguard Worker     override fun encodeValue(value: Any) {
15*57b5a4a6SAndroid Build Coastguard Worker         list.add(value)
16*57b5a4a6SAndroid Build Coastguard Worker     }
17*57b5a4a6SAndroid Build Coastguard Worker }
18*57b5a4a6SAndroid Build Coastguard Worker 
encodeToListnull19*57b5a4a6SAndroid Build Coastguard Worker fun <T> encodeToList(serializer: SerializationStrategy<T>, value: T): List<Any> {
20*57b5a4a6SAndroid Build Coastguard Worker     val encoder = ListEncoder()
21*57b5a4a6SAndroid Build Coastguard Worker     encoder.encodeSerializableValue(serializer, value)
22*57b5a4a6SAndroid Build Coastguard Worker     return encoder.list
23*57b5a4a6SAndroid Build Coastguard Worker }
24*57b5a4a6SAndroid Build Coastguard Worker 
encodeToListnull25*57b5a4a6SAndroid Build Coastguard Worker inline fun <reified T> encodeToList(value: T) = encodeToList(serializer(), value)
26*57b5a4a6SAndroid Build Coastguard Worker 
27*57b5a4a6SAndroid Build Coastguard Worker @Serializable
28*57b5a4a6SAndroid Build Coastguard Worker data class Project(val name: String, val owner: User, val votes: Int)
29*57b5a4a6SAndroid Build Coastguard Worker 
30*57b5a4a6SAndroid Build Coastguard Worker @Serializable
31*57b5a4a6SAndroid Build Coastguard Worker data class User(val name: String)
32*57b5a4a6SAndroid Build Coastguard Worker 
33*57b5a4a6SAndroid Build Coastguard Worker fun main() {
34*57b5a4a6SAndroid Build Coastguard Worker     val data = Project("kotlinx.serialization",  User("kotlin"), 9000)
35*57b5a4a6SAndroid Build Coastguard Worker     println(encodeToList(data))
36*57b5a4a6SAndroid Build Coastguard Worker }
37