All Downloads are FREE. Search and download functionalities are using the official Maven repository.

kr.bydelta.koala.kryo.WordSerializer.scala Maven / Gradle / Ivy

The newest version!
package kr.bydelta.koala.kryo

import com.esotericsoftware.kryo.io.{Input, Output}
import com.esotericsoftware.kryo.{Kryo, Serializer}
import kr.bydelta.koala.data.{Morpheme, Relationship, Word}

/**
  * KryoSerializer object for Word class
  */
object WordSerializer extends Serializer[Word] {
  override def write(kryo: Kryo, output: Output, value: Word): Unit = {
    output.writeString(value.surface)
    output.writeInt(value.size)
    value.morphemes.foreach(kryo.writeObject(output, _))
    output.writeInt(value.dependents.size)
    value.dependents.foreach(kryo.writeObject(output, _))
  }

  override def read(kryo: Kryo, input: Input, `type`: Class[Word]): Word = {
    val surface = input.readString
    val szMorph = input.readInt
    val morphs = (0 until szMorph).map {
      _ => kryo.readObject(input, classOf[Morpheme])
    }

    val word = Word(surface, morphs)
    val szDeps = input.readInt
    word.deps = (0 until szDeps).map {
      _ => kryo.readObject(input, classOf[Relationship])
    }.toSet

    word
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy