private[this] def typeForCollection()

in scrooge-core/src/main/scala/com/twitter/scrooge/internal/TProtocols.scala [91:130]


  private[this] def typeForCollection(elementType: Byte): Byte =
    if (elementType == TType.ENUM) TType.I32
    else elementType

  def writeList[T](
    protocol: TProtocol,
    list: collection.Seq[T],
    elementType: Byte,
    writeElement: (TProtocol, T) => Unit
  ): Unit = {
    val size = list.size
    protocol.writeListBegin(new TList(typeForCollection(elementType), size))
    list match {
      case wrappedArray: mutable.WrappedArray[T] =>
        val arr = wrappedArray.array
        var i = 0
        while (i < size) {
          val el: T = arr(i).asInstanceOf[T]
          writeElement(protocol, el)
          i += 1
        }
      case arrayBuffer: ArrayBuffer[T] =>
        var i = 0
        while (i < size) {
          writeElement(protocol, arrayBuffer(i))
          i += 1
        }
      case _: IndexedSeq[_] =>
        var i = 0
        while (i < size) {
          writeElement(protocol, list(i))
          i += 1
        }
      case _ =>
        list.foreach { element =>
          writeElement(protocol, element)
        }
    }
    protocol.writeListEnd()
  }