commonMain.kotlinx.serialization.builtins.BuiltinSerializers.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kotlinx-serialization-runtime Show documentation
Show all versions of kotlinx-serialization-runtime Show documentation
Kotlin multiplatform serialization runtime library
The newest version!
/*
* Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
@file:Suppress("DEPRECATION_ERROR", "FunctionName")
package kotlinx.serialization.builtins
import kotlinx.serialization.*
import kotlinx.serialization.internal.*
import kotlin.reflect.*
/**
* Returns a nullable serializer for the given serializer of non-null type.
*/
public val KSerializer.nullable: KSerializer
get() {
@Suppress("UNCHECKED_CAST")
return if (descriptor.isNullable) (this as KSerializer) else NullableSerializer(this)
}
/**
* Returns built-in serializer for Kotlin [Pair].
* Resulting serializer represents pair as a structure of two key-value pairs.
*/
public fun PairSerializer(
keySerializer: KSerializer,
valueSerializer: KSerializer
): KSerializer> = kotlinx.serialization.internal.PairSerializer(keySerializer, valueSerializer)
/**
* Returns built-in serializer for [Map.Entry].
* Resulting serializer represents entry as a structure with a single key-value pair.
* E.g. `Pair(1, 2)` and `Map.Entry(1, 2)` will be serialized to JSON as
* `{"first": 1, "second": 2}` and {"1": 2} respectively.
*/
public fun MapEntrySerializer(
keySerializer: KSerializer,
valueSerializer: KSerializer
): KSerializer> = kotlinx.serialization.internal.MapEntrySerializer(keySerializer, valueSerializer)
/**
* Returns built-in serializer for Kotlin [Triple].
* Resulting serializer represents triple as a structure of three key-value pairs.
*/
public fun TripleSerializer(
aSerializer: KSerializer,
bSerializer: KSerializer,
cSerializer: KSerializer
): KSerializer> = kotlinx.serialization.internal.TripleSerializer(aSerializer, bSerializer, cSerializer)
/**
* Returns serializer for [Char] with [descriptor][SerialDescriptor] of [PrimitiveKind.CHAR] kind.
*/
public fun Char.Companion.serializer(): KSerializer = CharSerializer
/**
* Returns serializer for [CharArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
* Each element of the array is serialized one by one with [Char.Companion.serializer].
*/
@Suppress("UNCHECKED_CAST")
public fun CharArraySerializer(): KSerializer = CharArraySerializer
/**
* Returns serializer for [Byte] with [descriptor][SerialDescriptor] of [PrimitiveKind.BYTE] kind.
*/
public fun Byte.Companion.serializer(): KSerializer = ByteSerializer
/**
* Returns serializer for [ByteArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
* Each element of the array is serialized one by one with [Byte.Companion.serializer].
*/
public fun ByteArraySerializer(): KSerializer = ByteArraySerializer
/**
* Returns serializer for [Short] with [descriptor][SerialDescriptor] of [PrimitiveKind.SHORT] kind.
*/
public fun Short.Companion.serializer(): KSerializer = ShortSerializer
/**
* Returns serializer for [ShortArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
* Each element of the array is serialized one by one with [Short.Companion.serializer].
*/
public fun ShortArraySerializer(): KSerializer = ShortArraySerializer
/**
* Returns serializer for [Int] with [descriptor][SerialDescriptor] of [PrimitiveKind.INT] kind.
*/
public fun Int.Companion.serializer(): KSerializer = IntSerializer
/**
* Returns serializer for [IntArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
* Each element of the array is serialized one by one with [Int.Companion.serializer].
*/
public fun IntArraySerializer(): KSerializer = IntArraySerializer
/**
* Returns serializer for [Long] with [descriptor][SerialDescriptor] of [PrimitiveKind.LONG] kind.
*/
public fun Long.Companion.serializer(): KSerializer = LongSerializer
/**
* Returns serializer for [LongArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
* Each element of the array is serialized one by one with [Long.Companion.serializer].
*/
public fun LongArraySerializer(): KSerializer = LongArraySerializer
/**
* Returns serializer for [Float] with [descriptor][SerialDescriptor] of [PrimitiveKind.FLOAT] kind.
*/
public fun Float.Companion.serializer(): KSerializer = FloatSerializer
/**
* Returns serializer for [FloatArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
* Each element of the array is serialized one by one with [Float.Companion.serializer].
*/
public fun FloatArraySerializer(): KSerializer = FloatArraySerializer
/**
* Returns serializer for [Double] with [descriptor][SerialDescriptor] of [PrimitiveKind.DOUBLE] kind.
*/
public fun Double.Companion.serializer(): KSerializer = DoubleSerializer
/**
* Returns serializer for [DoubleArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
* Each element of the array is serialized one by one with [Double.Companion.serializer].
*/
public fun DoubleArraySerializer(): KSerializer = DoubleArraySerializer
/**
* Returns serializer for [Boolean] with [descriptor][SerialDescriptor] of [PrimitiveKind.BOOLEAN] kind.
*/
public fun Boolean.Companion.serializer(): KSerializer = BooleanSerializer
/**
* Returns serializer for [BooleanArray] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
* Each element of the array is serialized one by one with [Boolean.Companion.serializer].
*/
public fun BooleanArraySerializer(): KSerializer = BooleanArraySerializer
/**
* Returns serializer for [Unit] with [descriptor][SerialDescriptor] of [StructureKind.OBJECT] kind.
*/
@Suppress("unused")
public fun Unit.serializer(): KSerializer = UnitSerializer
/**
* Returns serializer for [String] with [descriptor][SerialDescriptor] of [PrimitiveKind.STRING] kind.
*/
public fun String.Companion.serializer(): KSerializer = StringSerializer
/**
* Returns serializer for reference [Array] of type [E] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
* Each element of the array is serialized with the given [elementSerializer].
*/
@Suppress("UNCHECKED_CAST")
public inline fun ArraySerializer(elementSerializer: KSerializer): KSerializer> =
ArraySerializer(T::class, elementSerializer)
/**
* Returns serializer for reference [Array] of type [E] with [descriptor][SerialDescriptor] of [StructureKind.LIST] kind.
* Each element of the array is serialized with the given [elementSerializer].
*/
public fun ArraySerializer(
kClass: KClass,
elementSerializer: KSerializer
): KSerializer> = ReferenceArraySerializer(kClass, elementSerializer)
/**
* Creates a serializer for [`List`][List] for the given serializer of type [T].
*/
public fun ListSerializer(elementSerializer: KSerializer): KSerializer> =
ArrayListSerializer(elementSerializer)
/**
* Creates a serializer for [`Set`][Set] for the given serializer of type [T].
*/
public fun SetSerializer(elementSerializer: KSerializer): KSerializer> =
LinkedHashSetSerializer(elementSerializer)
/**
* Creates a serializer for [`Map`][Map] for the given serializers for
* its ket type [K] and value type [V].
*/
public fun MapSerializer(
keySerializer: KSerializer,
valueSerializer: KSerializer
): KSerializer
© 2015 - 2025 Weber Informatics LLC | Privacy Policy