private[this] def genWriteValue()

in scrooge-generator/src/main/scala/com/twitter/scrooge/backend/StructTemplate.scala [296:337]


  private[this] def genWriteValue(
    fieldName: CodeFragment,
    fieldType: FieldType,
    protoName: String
  ): CodeFragment = {
    fieldType match {
      case at: AnnotatedFieldType => genWriteValue(fieldName, at.unwrap, protoName)
      case TBool =>
        v(s"$protoName.writeBool($fieldName)")
      case TByte =>
        v(s"$protoName.writeByte($fieldName)")
      case TI16 =>
        v(s"$protoName.writeI16($fieldName)")
      case TI32 =>
        v(s"$protoName.writeI32($fieldName)")
      case TI64 =>
        v(s"$protoName.writeI64($fieldName)")
      case TDouble =>
        v(s"$protoName.writeDouble($fieldName)")
      case TString =>
        v(s"$protoName.writeString($fieldName)")
      case TBinary =>
        v(s"$protoName.writeBinary($fieldName)")
      case _: EnumType =>
        v(s"$protoName.writeI32($fieldName.value)")
      case _: StructType =>
        v(s"$fieldName.write($protoName)")
      case t: SetType =>
        val elemFieldType = s"TType.${genConstType(t.eltType)}"
        val writeElement = genWriteValueFn2(t.eltType)
        v(s"$rootProtos.writeSet($protoName, $fieldName, $elemFieldType, $writeElement)")
      case t: ListType =>
        genWriteListFn(t.eltType, fieldName, protoName)
      case t: MapType =>
        val keyType = s"TType.${genConstType(t.keyType)}"
        val valType = s"TType.${genConstType(t.valueType)}"
        val writeKey = genWriteValueFn2(t.keyType)
        val writeVal = genWriteValueFn2(t.valueType)
        v(s"$rootProtos.writeMap($protoName, $fieldName, $keyType, $writeKey, $valType, $writeVal)")
      case _ => throw new IllegalArgumentException(s"Unsupported FieldType: $fieldType")
    }
  }