forked from GitLiveApp/firebase-kotlin-sdk
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathEncodeDecodeSettings.kt
33 lines (28 loc) · 1.23 KB
/
EncodeDecodeSettings.kt
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
package dev.gitlive.firebase
import kotlinx.serialization.modules.EmptySerializersModule
import kotlinx.serialization.modules.SerializersModule
/**
* Settings used to configure encoding/decoding
*/
sealed class EncodeDecodeSettings {
/**
* The [SerializersModule] to use for serialization. This allows for polymorphic serialization on runtime
*/
abstract val serializersModule: SerializersModule
}
/**
* [EncodeDecodeSettings] used when encoding an object
* @property shouldEncodeElementDefault if `true` this will explicitly encode elements even if they are their default value
* @param serializersModule the [SerializersModule] to use for serialization. This allows for polymorphic serialization on runtime
*/
data class EncodeSettings(
val shouldEncodeElementDefault: Boolean = true,
override val serializersModule: SerializersModule = EmptySerializersModule(),
) : EncodeDecodeSettings()
/**
* [EncodeDecodeSettings] used when decoding an object
* @param serializersModule the [SerializersModule] to use for deserialization. This allows for polymorphic serialization on runtime
*/
data class DecodeSettings(
override val serializersModule: SerializersModule = EmptySerializersModule(),
) : EncodeDecodeSettings()