Coverage Summary for Class: RecursiveNodeSerializer (com.ghost.serialization.integration.model)

Class Class, % Method, % Branch, % Line, % Instruction, %
RecursiveNodeSerializer 100% (1/1) 88.9% (8/9) 44.7% (17/38) 69.9% (65/93) 65% (275/423)


 @file:OptIn(InternalGhostApi::class)
 
 package com.ghost.serialization.integration.model
 
 import com.ghost.serialization.InternalGhostApi
 import com.ghost.serialization.contract.GhostSerializer
 import com.ghost.serialization.parser.GhostJsonFlatReader
 import com.ghost.serialization.parser.GhostJsonReader
 import com.ghost.serialization.parser.JsonReaderOptions
 import com.ghost.serialization.parser.beginArray
 import com.ghost.serialization.parser.beginObject
 import com.ghost.serialization.parser.consumeNull
 import com.ghost.serialization.parser.endArray
 import com.ghost.serialization.parser.endObject
 import com.ghost.serialization.parser.isNextNullValue
 import com.ghost.serialization.parser.nextInt
 import com.ghost.serialization.parser.nextString
 import com.ghost.serialization.parser.readList
 import com.ghost.serialization.parser.selectNameAndConsume
 import com.ghost.serialization.parser.skipValue
 import com.ghost.serialization.writer.GhostJsonFlatWriter
 import com.ghost.serialization.writer.GhostJsonWriter
 import kotlin.collections.List
 import okio.ByteString
 import okio.ByteString.Companion.encodeUtf8
 
 /**
  * High-performance serializer for [RecursiveNode].
  * Generated by GhostSerialization. Do not modify manually.
  */
 public object RecursiveNodeSerializer : GhostSerializer<RecursiveNode> {
   override val typeName: String = "RecursiveNode"
 
   private val OPTIONS: JsonReaderOptions =
       JsonReaderOptions.of(0, 31, 128, false, "id", "name", "children")
 
   private val H_CHILDREN: ByteString = "\"children\":".encodeUtf8()
 
   private val H_ID: ByteString = "\"id\":".encodeUtf8()
 
   private val H_NAME: ByteString = "\"name\":".encodeUtf8()
 
   private const val MASK_ID: Long = 1L
 
   private const val MASK_NAME: Long = 2L
 
   private const val MASK_CHILDREN: Long = 4L
 
   private const val MASK_REQUIRED_0: Long = 3L
 
   private const val MASK_OPTS_CHILDREN: Long = 4L
 
   private fun validateRequiredFields(mask0: Long, reader: GhostJsonReader) {
     if ((mask0 and MASK_REQUIRED_0) != MASK_REQUIRED_0) {
       if ((mask0 and MASK_ID) == 0L) {
         reader.throwError("Required field 'id' missing in JSON")
       } else if ((mask0 and MASK_NAME) == 0L) {
         reader.throwError("Required field 'name' missing in JSON")
       }
     }
   }
 
   /**
    * Robust deserialization for [RecursiveNode].
    */
   override fun deserialize(reader: GhostJsonReader): RecursiveNode {
     var idValue: Int = 0
     var nameValue: String? = null
     var childrenValue: List<RecursiveNode>? = null
     var mask0 = 0L
     reader.beginObject()
     while (true) {
       val index = reader.selectNameAndConsume(OPTIONS)
       when (index) {
         0 -> {
           idValue = reader.nextInt()
           mask0 = mask0 or MASK_ID
         }
         1 -> {
           nameValue = reader.nextString()
           mask0 = mask0 or MASK_NAME
         }
         2 -> {
           childrenValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.readList { RecursiveNodeSerializer.deserialize(reader) }
           mask0 = mask0 or MASK_CHILDREN
         }
         -1 -> break
         -2 -> {
           reader.skipValue()
         }
       }
     }
     reader.endObject()
     validateRequiredFields(mask0, reader)
     if ((mask0 and MASK_OPTS_CHILDREN) == MASK_OPTS_CHILDREN) {
       return RecursiveNode(
         id = idValue,
         name = nameValue!!,
         children = childrenValue,
       )
     }
     return RecursiveNode(
       id = idValue,
       name = nameValue!!,
     )
   }
 
   private fun validateRequiredFields(mask0: Long, reader: GhostJsonFlatReader) {
     if ((mask0 and MASK_REQUIRED_0) != MASK_REQUIRED_0) {
       if ((mask0 and MASK_ID) == 0L) {
         reader.throwError("Required field 'id' missing in JSON")
       } else if ((mask0 and MASK_NAME) == 0L) {
         reader.throwError("Required field 'name' missing in JSON")
       }
     }
   }
 
   /**
    * Robust deserialization for [RecursiveNode].
    */
   override fun deserialize(reader: GhostJsonFlatReader): RecursiveNode {
     var idValue: Int = 0
     var nameValue: String? = null
     var childrenValue: List<RecursiveNode>? = null
     var mask0 = 0L
     reader.beginObject()
     while (true) {
       val index = reader.selectNameAndConsume(OPTIONS)
       when (index) {
         0 -> {
           idValue = reader.nextInt()
           mask0 = mask0 or MASK_ID
         }
         1 -> {
           nameValue = reader.nextString()
           mask0 = mask0 or MASK_NAME
         }
         2 -> {
           childrenValue = if (reader.isNextNullValue()) { reader.consumeNull(); null } else reader.readList { RecursiveNodeSerializer.deserialize(reader) }
           mask0 = mask0 or MASK_CHILDREN
         }
         -1 -> break
         -2 -> {
           reader.skipValue()
         }
       }
     }
     reader.endObject()
     validateRequiredFields(mask0, reader)
     if ((mask0 and MASK_OPTS_CHILDREN) == MASK_OPTS_CHILDREN) {
       return RecursiveNode(
         id = idValue,
         name = nameValue!!,
         children = childrenValue,
       )
     }
     return RecursiveNode(
       id = idValue,
       name = nameValue!!,
     )
   }
 
   override fun serialize(writer: GhostJsonWriter, `value`: RecursiveNode) {
     writer.beginObject()
     writer.writeField(H_ID, value.id)
     writer.writeField(H_NAME, value.name)
     if (value.children != null) {
       writer.writeNameRaw(H_CHILDREN)
       writer.beginArray()
       val size0 = value.children.size
       for (i0 in 0 until size0) {
         val item0 = value.children[i0]
         RecursiveNodeSerializer.serialize(writer, item0)
       }
       writer.endArray()
     }
     writer.endObject()
   }
 
   override fun serialize(writer: GhostJsonFlatWriter, `value`: RecursiveNode) {
     writer.beginObject()
     writer.writeField(H_ID, value.id)
     writer.writeField(H_NAME, value.name)
     if (value.children != null) {
       writer.writeNameRaw(H_CHILDREN)
       writer.beginArray()
       val size0 = value.children.size
       for (i0 in 0 until size0) {
         val item0 = value.children[i0]
         RecursiveNodeSerializer.serialize(writer, item0)
       }
       writer.endArray()
     }
     writer.endObject()
   }
 
   override fun warmUp() {
     try {
       val reader1 = GhostJsonReader("{\"id\":0,\"name\":\"\"}".encodeToByteArray())
       deserialize(reader1)
     } catch (_: Exception) {
     }
     try {
       val reader2 = GhostJsonFlatReader("{\"id\":0,\"name\":\"\"}".encodeToByteArray())
       deserialize(reader2)
     } catch (_: Exception) {
     }
   }
 }