Protobuf: removed trash files from ProtoKot Runtime sources folder
This commit is contained in:
@@ -1,14 +0,0 @@
|
|||||||
/**
|
|
||||||
* Created by user on 7/8/16.
|
|
||||||
*/
|
|
||||||
|
|
||||||
interface Message {
|
|
||||||
fun writeTo(output: CodedOutputStream)
|
|
||||||
fun getBuilder() : Builder
|
|
||||||
|
|
||||||
//TODO: think about something similar to static method getDefaultInstance()
|
|
||||||
|
|
||||||
interface Builder {
|
|
||||||
fun build(): Message
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
import java.io.ByteArrayInputStream
|
|
||||||
import java.io.ByteArrayOutputStream
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by user on 7/8/16.
|
|
||||||
*/
|
|
||||||
object AddressbookTests {
|
|
||||||
fun testMessageSerialization() {
|
|
||||||
// Messages work only with CodedStream classes, provided by ProtoKot-runtime library.
|
|
||||||
// One can create CodedStream passing any instance of corresponding Stream from Java's library.
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val outs = CodedOutputStream(s)
|
|
||||||
|
|
||||||
// All messages are immutable. Use Builders for creating new messages
|
|
||||||
val msg = Person.BuilderPerson()
|
|
||||||
.setEmail("wtf@dasda.com") // all setters return this builder, so you could chain modifiers in LINQ-style
|
|
||||||
.setId(42)
|
|
||||||
.setName("John Doe")
|
|
||||||
.addPhoneNumber(// repeated fields stored as Array<>, so use arrayOf() for creating repeated fields
|
|
||||||
Person.PhoneNumber.BuilderPhoneNumber()
|
|
||||||
.setNumber("342143-23423-42")
|
|
||||||
.setType(Person.PhoneType.HOME)
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
.addPhoneNumber(
|
|
||||||
Person.PhoneNumber.BuilderPhoneNumber()
|
|
||||||
.setNumber("8-800-555-35-35")
|
|
||||||
.setType(Person.PhoneType.WORK)
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
.build() // don't forget to call build() to produce message
|
|
||||||
msg.writeTo(outs)
|
|
||||||
|
|
||||||
// Now let's use output stream as input to read our message from it!
|
|
||||||
var ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
|
|
||||||
// Create default instance of message
|
|
||||||
var readMsg = Person.BuilderPerson().build()
|
|
||||||
// Read in that message data from input stream.
|
|
||||||
readMsg.mergeFrom(ins)
|
|
||||||
|
|
||||||
// Note, that currently mergeFrom is the only way to mutate instance of message.
|
|
||||||
// Don't rely on it, probably mergeFrom will be refactored lately to guarantee full immutability of mesages.
|
|
||||||
|
|
||||||
// Better way to read a message:
|
|
||||||
ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
readMsg = Person.BuilderPerson().readFrom(ins).build()
|
|
||||||
assert(msg == readMsg)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fun main(args: Array<String>) {
|
|
||||||
AddressbookTests.testMessageSerialization()
|
|
||||||
println("OK")
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
import java.io.ByteArrayOutputStream
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by user on 7/18/16.
|
|
||||||
*/
|
|
||||||
|
|
||||||
object NestedMsgTests {
|
|
||||||
val msg1 = Level1.BuilderLevel1()
|
|
||||||
.setField1(
|
|
||||||
Level1.Level2.BuilderLevel2()
|
|
||||||
.setField2(
|
|
||||||
Level1.Level2.Level3.BuilderLevel3()
|
|
||||||
.setField3(
|
|
||||||
Level1.Level2.Level3.Level4.BuilderLevel4()
|
|
||||||
.setField4("Hello!")
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
.build()
|
|
||||||
|
|
||||||
fun testMessageSerialization() {
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val output = CodedOutputStream(s)
|
|
||||||
|
|
||||||
msg1.writeTo(output)
|
|
||||||
|
|
||||||
val readMsg = Level1.BuilderLevel1().build()
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fun main(args: Array<String>) {
|
|
||||||
NestedMsgTests.testMessageSerialization()
|
|
||||||
println("OK")
|
|
||||||
}
|
|
||||||
@@ -1,157 +0,0 @@
|
|||||||
import java.io.ByteArrayInputStream
|
|
||||||
import java.io.ByteArrayOutputStream
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by user on 7/7/16.
|
|
||||||
*/
|
|
||||||
|
|
||||||
fun testTrivialPositiveVarInts() {
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val outs = CodedOutputStream(s)
|
|
||||||
outs.writeInt32(1, 42)
|
|
||||||
outs.writeInt32(16, 1)
|
|
||||||
outs.writeInt32(2, -2)
|
|
||||||
outs.writeInt32(3, -21321)
|
|
||||||
outs.writeInt64(5, 42L)
|
|
||||||
outs.writeInt64(6, 1232132131212321L)
|
|
||||||
outs.writeInt64(7, -2)
|
|
||||||
outs.writeInt64(8, -21321L)
|
|
||||||
outs.writeInt64(9, -32132132132131L)
|
|
||||||
|
|
||||||
val ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
assertSuccessfulRead(42, ins.readInt32(1))
|
|
||||||
assertSuccessfulRead(1, ins.readInt32(16))
|
|
||||||
assertSuccessfulRead(-2, ins.readInt32(2))
|
|
||||||
assertSuccessfulRead(-21321, ins.readInt32(3))
|
|
||||||
assertSuccessfulRead(42L, ins.readInt64(5))
|
|
||||||
assertSuccessfulRead(1232132131212321L, ins.readInt64(6))
|
|
||||||
assertSuccessfulRead(-2, ins.readInt64(7))
|
|
||||||
assertSuccessfulRead(-21321L, ins.readInt64(8))
|
|
||||||
assertSuccessfulRead(-32132132132131L, ins.readInt64(9))
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun testMinPossibleVarInts() {
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val outs = CodedOutputStream(s)
|
|
||||||
outs.writeInt32(1, Int.MIN_VALUE)
|
|
||||||
outs.writeInt64(2, Long.MIN_VALUE)
|
|
||||||
|
|
||||||
val ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
assertSuccessfulRead(Int.MIN_VALUE, ins.readInt32(1))
|
|
||||||
assertSuccessfulRead(Long.MIN_VALUE, ins.readInt64(2))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testMaxPossibleVarInts() {
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val outs = CodedOutputStream(s)
|
|
||||||
outs.writeInt32(1, Int.MAX_VALUE)
|
|
||||||
outs.writeInt64(2, Long.MAX_VALUE)
|
|
||||||
|
|
||||||
val ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
assertSuccessfulRead(Int.MAX_VALUE, ins.readInt32(1))
|
|
||||||
assertSuccessfulRead(Long.MAX_VALUE, ins.readInt64(2))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testMaxPossibleFieldNumber() {
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val outs = CodedOutputStream(s)
|
|
||||||
outs.writeInt64(536870911, Long.MAX_VALUE)
|
|
||||||
|
|
||||||
val ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
assertSuccessfulRead(Long.MAX_VALUE, ins.readInt64(536870911))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testZigZag32() {
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val outs = CodedOutputStream(s)
|
|
||||||
outs.writeSInt32(5, -213123)
|
|
||||||
outs.writeSInt32(1, 3123123)
|
|
||||||
outs.writeSInt32(4, -12345675)
|
|
||||||
|
|
||||||
val ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
assertSuccessfulRead(-213123, ins.readSInt32(5))
|
|
||||||
assertSuccessfulRead(3123123, ins.readSInt32(1))
|
|
||||||
assertSuccessfulRead(-12345675, ins.readSInt32(4))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testZigZag64() {
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val outs = CodedOutputStream(s)
|
|
||||||
outs.writeSInt64(5, -213123L)
|
|
||||||
outs.writeSInt64(1, 3123123L)
|
|
||||||
outs.writeSInt64(4, -12345675L)
|
|
||||||
outs.writeSInt64(12, -123456789012L)
|
|
||||||
outs.writeSInt64(42, 483567314231L)
|
|
||||||
|
|
||||||
val ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
assertSuccessfulRead(-213123L, ins.readSInt64(5))
|
|
||||||
assertSuccessfulRead(3123123L, ins.readSInt64(1))
|
|
||||||
assertSuccessfulRead(-12345675L, ins.readSInt64(4))
|
|
||||||
assertSuccessfulRead(-123456789012L, ins.readSInt64(12))
|
|
||||||
assertSuccessfulRead(483567314231L, ins.readSInt64(42))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testBoolean() {
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val outs = CodedOutputStream(s)
|
|
||||||
outs.writeBool(1, true)
|
|
||||||
outs.writeBool(2, false)
|
|
||||||
|
|
||||||
val ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
assertSuccessfulRead(true, ins.readBool(1))
|
|
||||||
assertSuccessfulRead(false, ins.readBool(2))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testEnum() {
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val outs = CodedOutputStream(s)
|
|
||||||
outs.writeEnum(1, WireType.END_GROUP.ordinal)
|
|
||||||
outs.writeEnum(2, WireType.FIX_64.ordinal)
|
|
||||||
|
|
||||||
val ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
assertSuccessfulRead(WireType.END_GROUP.ordinal, ins.readEnum(1))
|
|
||||||
assertSuccessfulRead(WireType.FIX_64.ordinal, ins.readEnum(2))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testFloatAndDouble() {
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val outs = CodedOutputStream(s)
|
|
||||||
outs.writeDouble(42, 123212.34282)
|
|
||||||
outs.writeDouble(15, Math.PI)
|
|
||||||
outs.writeFloat(14, -1.32131321f)
|
|
||||||
|
|
||||||
val ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
assertSuccessfulRead(123212.34282, ins.readDouble(42))
|
|
||||||
assertSuccessfulRead(Math.PI, ins.readDouble(15))
|
|
||||||
assertSuccessfulRead(-1.32131321f, ins.readFloat(14))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testStrings() {
|
|
||||||
val s = ByteArrayOutputStream()
|
|
||||||
val outs = CodedOutputStream(s)
|
|
||||||
outs.writeString(42, "dasddasd asd ")
|
|
||||||
outs.writeString(15, """!@#$%^&*()QWERTYUI выфвфывфы""")
|
|
||||||
|
|
||||||
val ins = CodedInputStream(ByteArrayInputStream(s.toByteArray()))
|
|
||||||
assertSuccessfulRead("dasddasd asd ", ins.readString(42))
|
|
||||||
assertSuccessfulRead("""!@#$%^&*()QWERTYUI выфвфывфы""", ins.readString(15))
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> assertSuccessfulRead(value: T, actualValue: T) {
|
|
||||||
assert(actualValue == value)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
|
||||||
testTrivialPositiveVarInts()
|
|
||||||
testMinPossibleVarInts()
|
|
||||||
testMaxPossibleVarInts()
|
|
||||||
testMaxPossibleFieldNumber()
|
|
||||||
testZigZag32()
|
|
||||||
testZigZag64()
|
|
||||||
testBoolean()
|
|
||||||
testEnum()
|
|
||||||
testFloatAndDouble()
|
|
||||||
testStrings()
|
|
||||||
print("OK")
|
|
||||||
}
|
|
||||||
@@ -1,451 +0,0 @@
|
|||||||
class Person private constructor (name: String = "", id: Int = 0, email: String = "", phones: MutableList <Person.PhoneNumber> = mutableListOf(), someBytes: ByteArray = ByteArray(0)) {
|
|
||||||
var name : String
|
|
||||||
private set
|
|
||||||
|
|
||||||
var id : Int
|
|
||||||
private set
|
|
||||||
|
|
||||||
var email : String
|
|
||||||
private set
|
|
||||||
|
|
||||||
var phones : MutableList <Person.PhoneNumber>
|
|
||||||
private set
|
|
||||||
|
|
||||||
var someBytes : ByteArray
|
|
||||||
private set
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.name = name
|
|
||||||
this.id = id
|
|
||||||
this.email = email
|
|
||||||
this.phones = phones
|
|
||||||
this.someBytes = someBytes
|
|
||||||
}
|
|
||||||
enum class PhoneType(val ord: Int) {
|
|
||||||
MOBILE (0),
|
|
||||||
HOME (1),
|
|
||||||
WORK (2);
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
fun fromIntToPhoneType (ord: Int): PhoneType {
|
|
||||||
return when (ord) {
|
|
||||||
0 -> PhoneType.MOBILE
|
|
||||||
1 -> PhoneType.HOME
|
|
||||||
2 -> PhoneType.WORK
|
|
||||||
else -> throw InvalidProtocolBufferException("Error: got unexpected int ${ord} while parsing PhoneType ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class PhoneNumber private constructor (number: String = "", type: Person.PhoneType = Person.PhoneType.fromIntToPhoneType(0)) {
|
|
||||||
var number : String
|
|
||||||
private set
|
|
||||||
|
|
||||||
var type : Person.PhoneType
|
|
||||||
private set
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.number = number
|
|
||||||
this.type = type
|
|
||||||
}
|
|
||||||
|
|
||||||
fun writeTo (output: CodedOutputStream): Unit {
|
|
||||||
output.writeString (1, number)
|
|
||||||
output.writeEnum (2, type.ord)
|
|
||||||
}
|
|
||||||
|
|
||||||
class BuilderPhoneNumber constructor (number: String = "", type: Person.PhoneType = Person.PhoneType.fromIntToPhoneType(0)) {
|
|
||||||
var number : String
|
|
||||||
private set
|
|
||||||
fun setNumber(value: String): Person.PhoneNumber.BuilderPhoneNumber {
|
|
||||||
number = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
var type : Person.PhoneType
|
|
||||||
private set
|
|
||||||
fun setType(value: Person.PhoneType): Person.PhoneNumber.BuilderPhoneNumber {
|
|
||||||
type = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.number = number
|
|
||||||
this.type = type
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readFrom (input: CodedInputStream): Person.PhoneNumber.BuilderPhoneNumber {
|
|
||||||
number = input.readString(1)
|
|
||||||
type = Person.PhoneType.fromIntToPhoneType(input.readEnum(2))
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun build(): Person.PhoneNumber {
|
|
||||||
return Person.PhoneNumber(number, type)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun parseFieldFrom(input: CodedInputStream): Boolean {
|
|
||||||
if (input.isAtEnd()) { return false }
|
|
||||||
val tag = input.readInt32NoTag()
|
|
||||||
if (tag == 0) { return false }
|
|
||||||
val fieldNumber = WireFormat.getTagFieldNumber(tag)
|
|
||||||
val wireType = WireFormat.getTagWireType(tag)
|
|
||||||
when(fieldNumber) {
|
|
||||||
1 -> number = input.readStringNoTag()
|
|
||||||
2 -> type = Person.PhoneType.fromIntToPhoneType(input.readEnumNoTag())
|
|
||||||
}
|
|
||||||
return true}
|
|
||||||
fun parseFrom(input: CodedInputStream): Person.PhoneNumber.BuilderPhoneNumber {
|
|
||||||
while(parseFieldFrom(input)) {}
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += WireFormat.getStringSize(1, number)
|
|
||||||
size += WireFormat.getEnumSize(2, type.ord)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun mergeWith (other: Person.PhoneNumber) {
|
|
||||||
number = other.number
|
|
||||||
type = other.type
|
|
||||||
}
|
|
||||||
|
|
||||||
fun mergeFrom (input: CodedInputStream) {
|
|
||||||
val builder = Person.PhoneNumber.BuilderPhoneNumber()
|
|
||||||
mergeWith(builder.parseFrom(input).build())}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += WireFormat.getStringSize(1, number)
|
|
||||||
size += WireFormat.getEnumSize(2, type.ord)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun writeTo (output: CodedOutputStream): Unit {
|
|
||||||
output.writeString (1, name)
|
|
||||||
output.writeInt32 (2, id)
|
|
||||||
output.writeString (3, email)
|
|
||||||
if (phones.size > 0) {
|
|
||||||
output.writeTag(4, WireType.LENGTH_DELIMITED)
|
|
||||||
var arrayByteSize = 0
|
|
||||||
run {
|
|
||||||
var arraySize = 0
|
|
||||||
for (item in phones) {
|
|
||||||
arraySize += item.getSize() + WireFormat.getTagSize(4, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(item.getSize())
|
|
||||||
}
|
|
||||||
arrayByteSize += arraySize
|
|
||||||
}
|
|
||||||
output.writeInt32NoTag(arrayByteSize)
|
|
||||||
for (item in phones) {
|
|
||||||
output.writeTag(4, WireType.LENGTH_DELIMITED)
|
|
||||||
output.writeInt32NoTag(item.getSize())
|
|
||||||
item.writeTo(output)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
output.writeBytes (5, someBytes)
|
|
||||||
}
|
|
||||||
|
|
||||||
class BuilderPerson constructor (name: String = "", id: Int = 0, email: String = "", phones: MutableList <Person.PhoneNumber> = mutableListOf(), someBytes: ByteArray = ByteArray(0)) {
|
|
||||||
var name : String
|
|
||||||
private set
|
|
||||||
fun setName(value: String): Person.BuilderPerson {
|
|
||||||
name = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
var id : Int
|
|
||||||
private set
|
|
||||||
fun setId(value: Int): Person.BuilderPerson {
|
|
||||||
id = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
var email : String
|
|
||||||
private set
|
|
||||||
fun setEmail(value: String): Person.BuilderPerson {
|
|
||||||
email = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
var phones : MutableList <Person.PhoneNumber>
|
|
||||||
private set
|
|
||||||
fun setPhones(value: MutableList <Person.PhoneNumber>): Person.BuilderPerson {
|
|
||||||
phones = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun setPhoneNumber(index: Int, value: PhoneNumber): Person.BuilderPerson {
|
|
||||||
phones[index] = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun addPhoneNumber(value: PhoneNumber): Person.BuilderPerson {
|
|
||||||
phones.add(value)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun addAllPhoneNumber(value: Iterable<PhoneNumber>): Person.BuilderPerson {
|
|
||||||
for (item in value) {
|
|
||||||
phones.add(item)
|
|
||||||
}
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
var someBytes : ByteArray
|
|
||||||
private set
|
|
||||||
fun setSomeBytes(value: ByteArray): Person.BuilderPerson {
|
|
||||||
someBytes = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.name = name
|
|
||||||
this.id = id
|
|
||||||
this.email = email
|
|
||||||
this.phones = phones
|
|
||||||
this.someBytes = someBytes
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readFrom (input: CodedInputStream): Person.BuilderPerson {
|
|
||||||
name = input.readString(1)
|
|
||||||
id = input.readInt32(2)
|
|
||||||
email = input.readString(3)
|
|
||||||
val tag = input.readTag(4, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
var readSize = 0
|
|
||||||
while(readSize != expectedSize) {
|
|
||||||
val tmp: Person.PhoneNumber = Person.PhoneNumber.BuilderPhoneNumber().build()
|
|
||||||
input.readTag(4, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
tmp.mergeFrom(input)
|
|
||||||
if (expectedSize != tmp.getSize()) { throw InvalidProtocolBufferException ("Expected size ${expectedSize} got ${tmp.getSize()}") }
|
|
||||||
readSize += tmp.getSize() + WireFormat.getTagSize(4, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(tmp.getSize())
|
|
||||||
phones.add(tmp)
|
|
||||||
}
|
|
||||||
someBytes = input.readBytes(5)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun build(): Person {
|
|
||||||
return Person(name, id, email, phones, someBytes)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun parseFieldFrom(input: CodedInputStream): Boolean {
|
|
||||||
if (input.isAtEnd()) { return false }
|
|
||||||
val tag = input.readInt32NoTag()
|
|
||||||
if (tag == 0) { return false }
|
|
||||||
val fieldNumber = WireFormat.getTagFieldNumber(tag)
|
|
||||||
val wireType = WireFormat.getTagWireType(tag)
|
|
||||||
when(fieldNumber) {
|
|
||||||
1 -> name = input.readStringNoTag()
|
|
||||||
2 -> id = input.readInt32NoTag()
|
|
||||||
3 -> email = input.readStringNoTag()
|
|
||||||
4 -> {
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
var readSize = 0
|
|
||||||
while(readSize != expectedSize) {
|
|
||||||
val tmp: Person.PhoneNumber = Person.PhoneNumber.BuilderPhoneNumber().build()
|
|
||||||
input.readTag(4, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
tmp.mergeFrom(input)
|
|
||||||
if (expectedSize != tmp.getSize()) { throw InvalidProtocolBufferException ("Expected size ${expectedSize} got ${tmp.getSize()}") }
|
|
||||||
readSize += tmp.getSize() + WireFormat.getTagSize(4, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(tmp.getSize())
|
|
||||||
phones.add(tmp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
5 -> someBytes = input.readBytesNoTag()
|
|
||||||
}
|
|
||||||
return true}
|
|
||||||
fun parseFrom(input: CodedInputStream): Person.BuilderPerson {
|
|
||||||
while(parseFieldFrom(input)) {}
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += WireFormat.getStringSize(1, name)
|
|
||||||
size += WireFormat.getInt32Size(2, id)
|
|
||||||
size += WireFormat.getStringSize(3, email)
|
|
||||||
run {
|
|
||||||
var arraySize = 0
|
|
||||||
for (item in phones) {
|
|
||||||
arraySize += item.getSize() + WireFormat.getTagSize(4, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(item.getSize())
|
|
||||||
}
|
|
||||||
size += arraySize + WireFormat.getTagSize(4, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(arraySize)
|
|
||||||
}
|
|
||||||
size += WireFormat.getBytesSize(5, someBytes)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun mergeWith (other: Person) {
|
|
||||||
name = other.name
|
|
||||||
id = other.id
|
|
||||||
email = other.email
|
|
||||||
phones.addAll(other.phones)
|
|
||||||
someBytes.plus(other.someBytes)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun mergeFrom (input: CodedInputStream) {
|
|
||||||
val builder = Person.BuilderPerson()
|
|
||||||
mergeWith(builder.parseFrom(input).build())}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += WireFormat.getStringSize(1, name)
|
|
||||||
size += WireFormat.getInt32Size(2, id)
|
|
||||||
size += WireFormat.getStringSize(3, email)
|
|
||||||
run {
|
|
||||||
var arraySize = 0
|
|
||||||
for (item in phones) {
|
|
||||||
arraySize += item.getSize() + WireFormat.getTagSize(4, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(item.getSize())
|
|
||||||
}
|
|
||||||
size += arraySize + WireFormat.getTagSize(4, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(arraySize)
|
|
||||||
}
|
|
||||||
size += WireFormat.getBytesSize(5, someBytes)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class AddressBook private constructor (people: MutableList <Person> = mutableListOf()) {
|
|
||||||
var people : MutableList <Person>
|
|
||||||
private set
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.people = people
|
|
||||||
}
|
|
||||||
|
|
||||||
fun writeTo (output: CodedOutputStream): Unit {
|
|
||||||
if (people.size > 0) {
|
|
||||||
output.writeTag(1, WireType.LENGTH_DELIMITED)
|
|
||||||
var arrayByteSize = 0
|
|
||||||
run {
|
|
||||||
var arraySize = 0
|
|
||||||
for (item in people) {
|
|
||||||
arraySize += item.getSize() + WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(item.getSize())
|
|
||||||
}
|
|
||||||
arrayByteSize += arraySize
|
|
||||||
}
|
|
||||||
output.writeInt32NoTag(arrayByteSize)
|
|
||||||
for (item in people) {
|
|
||||||
output.writeTag(1, WireType.LENGTH_DELIMITED)
|
|
||||||
output.writeInt32NoTag(item.getSize())
|
|
||||||
item.writeTo(output)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class BuilderAddressBook constructor (people: MutableList <Person> = mutableListOf()) {
|
|
||||||
var people : MutableList <Person>
|
|
||||||
private set
|
|
||||||
fun setPeople(value: MutableList <Person>): AddressBook.BuilderAddressBook {
|
|
||||||
people = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun setPerson(index: Int, value: Person): AddressBook.BuilderAddressBook {
|
|
||||||
people[index] = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun addPerson(value: Person): AddressBook.BuilderAddressBook {
|
|
||||||
people.add(value)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun addAllPerson(value: Iterable<Person>): AddressBook.BuilderAddressBook {
|
|
||||||
for (item in value) {
|
|
||||||
people.add(item)
|
|
||||||
}
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.people = people
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readFrom (input: CodedInputStream): AddressBook.BuilderAddressBook {
|
|
||||||
val tag = input.readTag(1, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
var readSize = 0
|
|
||||||
while(readSize != expectedSize) {
|
|
||||||
val tmp: Person = Person.BuilderPerson().build()
|
|
||||||
input.readTag(1, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
tmp.mergeFrom(input)
|
|
||||||
if (expectedSize != tmp.getSize()) { throw InvalidProtocolBufferException ("Expected size ${expectedSize} got ${tmp.getSize()}") }
|
|
||||||
readSize += tmp.getSize() + WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(tmp.getSize())
|
|
||||||
people.add(tmp)
|
|
||||||
}
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun build(): AddressBook {
|
|
||||||
return AddressBook(people)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun parseFieldFrom(input: CodedInputStream): Boolean {
|
|
||||||
if (input.isAtEnd()) { return false }
|
|
||||||
val tag = input.readInt32NoTag()
|
|
||||||
if (tag == 0) { return false }
|
|
||||||
val fieldNumber = WireFormat.getTagFieldNumber(tag)
|
|
||||||
val wireType = WireFormat.getTagWireType(tag)
|
|
||||||
when(fieldNumber) {
|
|
||||||
1 -> {
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
var readSize = 0
|
|
||||||
while(readSize != expectedSize) {
|
|
||||||
val tmp: Person = Person.BuilderPerson().build()
|
|
||||||
input.readTag(1, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
tmp.mergeFrom(input)
|
|
||||||
if (expectedSize != tmp.getSize()) { throw InvalidProtocolBufferException ("Expected size ${expectedSize} got ${tmp.getSize()}") }
|
|
||||||
readSize += tmp.getSize() + WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(tmp.getSize())
|
|
||||||
people.add(tmp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true}
|
|
||||||
fun parseFrom(input: CodedInputStream): AddressBook.BuilderAddressBook {
|
|
||||||
while(parseFieldFrom(input)) {}
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
run {
|
|
||||||
var arraySize = 0
|
|
||||||
for (item in people) {
|
|
||||||
arraySize += item.getSize() + WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(item.getSize())
|
|
||||||
}
|
|
||||||
size += arraySize + WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(arraySize)
|
|
||||||
}
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun mergeWith (other: AddressBook) {
|
|
||||||
people.addAll(other.people)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun mergeFrom (input: CodedInputStream) {
|
|
||||||
val builder = AddressBook.BuilderAddressBook()
|
|
||||||
mergeWith(builder.parseFrom(input).build())}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
run {
|
|
||||||
var arraySize = 0
|
|
||||||
for (item in people) {
|
|
||||||
arraySize += item.getSize() + WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(item.getSize())
|
|
||||||
}
|
|
||||||
size += arraySize + WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(arraySize)
|
|
||||||
}
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,315 +0,0 @@
|
|||||||
class Level1 private constructor (field1: Level1.Level2 = Level1.Level2.BuilderLevel2().build()) {
|
|
||||||
var field1 : Level1.Level2
|
|
||||||
private set
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.field1 = field1
|
|
||||||
}
|
|
||||||
class Level2 private constructor (field2: Level1.Level2.Level3 = Level1.Level2.Level3.BuilderLevel3().build()) {
|
|
||||||
var field2 : Level1.Level2.Level3
|
|
||||||
private set
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.field2 = field2
|
|
||||||
}
|
|
||||||
class Level3 private constructor (field3: Level1.Level2.Level3.Level4 = Level1.Level2.Level3.Level4.BuilderLevel4().build()) {
|
|
||||||
var field3 : Level1.Level2.Level3.Level4
|
|
||||||
private set
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.field3 = field3
|
|
||||||
}
|
|
||||||
class Level4 private constructor (field4: String = "") {
|
|
||||||
var field4 : String
|
|
||||||
private set
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.field4 = field4
|
|
||||||
}
|
|
||||||
|
|
||||||
fun writeTo (output: CodedOutputStream): Unit {
|
|
||||||
output.writeString (4, field4)
|
|
||||||
}
|
|
||||||
|
|
||||||
class BuilderLevel4 constructor (field4: String = "") {
|
|
||||||
var field4 : String
|
|
||||||
private set
|
|
||||||
fun setField4(value: String): Level1.Level2.Level3.Level4.BuilderLevel4 {
|
|
||||||
field4 = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.field4 = field4
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readFrom (input: CodedInputStream): Level1.Level2.Level3.Level4.BuilderLevel4 {
|
|
||||||
field4 = input.readString(4)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun build(): Level1.Level2.Level3.Level4 {
|
|
||||||
return Level1.Level2.Level3.Level4(field4)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun parseFieldFrom(input: CodedInputStream): Boolean {
|
|
||||||
if (input.isAtEnd()) { return false }
|
|
||||||
val tag = input.readInt32NoTag()
|
|
||||||
if (tag == 0) { return false }
|
|
||||||
val fieldNumber = WireFormat.getTagFieldNumber(tag)
|
|
||||||
val wireType = WireFormat.getTagWireType(tag)
|
|
||||||
when(fieldNumber) {
|
|
||||||
4 -> field4 = input.readStringNoTag()
|
|
||||||
}
|
|
||||||
return true}
|
|
||||||
fun parseFrom(input: CodedInputStream): Level1.Level2.Level3.Level4.BuilderLevel4 {
|
|
||||||
while(parseFieldFrom(input)) {}
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += WireFormat.getStringSize(4, field4)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun mergeWith (other: Level1.Level2.Level3.Level4) {
|
|
||||||
field4 = other.field4
|
|
||||||
}
|
|
||||||
|
|
||||||
fun mergeFrom (input: CodedInputStream) {
|
|
||||||
val builder = Level1.Level2.Level3.Level4.BuilderLevel4()
|
|
||||||
mergeWith(builder.parseFrom(input).build())}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += WireFormat.getStringSize(4, field4)
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun writeTo (output: CodedOutputStream): Unit {
|
|
||||||
output.writeTag(3, WireType.LENGTH_DELIMITED)
|
|
||||||
output.writeInt32NoTag(field3.getSize())
|
|
||||||
field3.writeTo(output)
|
|
||||||
}
|
|
||||||
|
|
||||||
class BuilderLevel3 constructor (field3: Level1.Level2.Level3.Level4 = Level1.Level2.Level3.Level4.BuilderLevel4().build()) {
|
|
||||||
var field3 : Level1.Level2.Level3.Level4
|
|
||||||
private set
|
|
||||||
fun setField3(value: Level1.Level2.Level3.Level4): Level1.Level2.Level3.BuilderLevel3 {
|
|
||||||
field3 = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.field3 = field3
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readFrom (input: CodedInputStream): Level1.Level2.Level3.BuilderLevel3 {
|
|
||||||
input.readTag(3, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
field3.mergeFrom(input)
|
|
||||||
if (expectedSize != field3.getSize()) { throw InvalidProtocolBufferException ("Expected size ${expectedSize} got ${field3.getSize()}") }
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun build(): Level1.Level2.Level3 {
|
|
||||||
return Level1.Level2.Level3(field3)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun parseFieldFrom(input: CodedInputStream): Boolean {
|
|
||||||
if (input.isAtEnd()) { return false }
|
|
||||||
val tag = input.readInt32NoTag()
|
|
||||||
if (tag == 0) { return false }
|
|
||||||
val fieldNumber = WireFormat.getTagFieldNumber(tag)
|
|
||||||
val wireType = WireFormat.getTagWireType(tag)
|
|
||||||
when(fieldNumber) {
|
|
||||||
3 -> {
|
|
||||||
input.readTag(3, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
field3.mergeFrom(input)
|
|
||||||
if (expectedSize != field3.getSize()) { throw InvalidProtocolBufferException ("Expected size ${expectedSize} got ${field3.getSize()}") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true}
|
|
||||||
fun parseFrom(input: CodedInputStream): Level1.Level2.Level3.BuilderLevel3 {
|
|
||||||
while(parseFieldFrom(input)) {}
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += field3.getSize() + WireFormat.getTagSize(3, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(field3.getSize())
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun mergeWith (other: Level1.Level2.Level3) {
|
|
||||||
field3 = other.field3
|
|
||||||
}
|
|
||||||
|
|
||||||
fun mergeFrom (input: CodedInputStream) {
|
|
||||||
val builder = Level1.Level2.Level3.BuilderLevel3()
|
|
||||||
mergeWith(builder.parseFrom(input).build())}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += field3.getSize() + WireFormat.getTagSize(3, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(field3.getSize())
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun writeTo (output: CodedOutputStream): Unit {
|
|
||||||
output.writeTag(2, WireType.LENGTH_DELIMITED)
|
|
||||||
output.writeInt32NoTag(field2.getSize())
|
|
||||||
field2.writeTo(output)
|
|
||||||
}
|
|
||||||
|
|
||||||
class BuilderLevel2 constructor (field2: Level1.Level2.Level3 = Level1.Level2.Level3.BuilderLevel3().build()) {
|
|
||||||
var field2 : Level1.Level2.Level3
|
|
||||||
private set
|
|
||||||
fun setField2(value: Level1.Level2.Level3): Level1.Level2.BuilderLevel2 {
|
|
||||||
field2 = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.field2 = field2
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readFrom (input: CodedInputStream): Level1.Level2.BuilderLevel2 {
|
|
||||||
input.readTag(2, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
field2.mergeFrom(input)
|
|
||||||
if (expectedSize != field2.getSize()) { throw InvalidProtocolBufferException ("Expected size ${expectedSize} got ${field2.getSize()}") }
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun build(): Level1.Level2 {
|
|
||||||
return Level1.Level2(field2)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun parseFieldFrom(input: CodedInputStream): Boolean {
|
|
||||||
if (input.isAtEnd()) { return false }
|
|
||||||
val tag = input.readInt32NoTag()
|
|
||||||
if (tag == 0) { return false }
|
|
||||||
val fieldNumber = WireFormat.getTagFieldNumber(tag)
|
|
||||||
val wireType = WireFormat.getTagWireType(tag)
|
|
||||||
when(fieldNumber) {
|
|
||||||
2 -> {
|
|
||||||
input.readTag(2, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
field2.mergeFrom(input)
|
|
||||||
if (expectedSize != field2.getSize()) { throw InvalidProtocolBufferException ("Expected size ${expectedSize} got ${field2.getSize()}") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true}
|
|
||||||
fun parseFrom(input: CodedInputStream): Level1.Level2.BuilderLevel2 {
|
|
||||||
while(parseFieldFrom(input)) {}
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += field2.getSize() + WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(field2.getSize())
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun mergeWith (other: Level1.Level2) {
|
|
||||||
field2 = other.field2
|
|
||||||
}
|
|
||||||
|
|
||||||
fun mergeFrom (input: CodedInputStream) {
|
|
||||||
val builder = Level1.Level2.BuilderLevel2()
|
|
||||||
mergeWith(builder.parseFrom(input).build())}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += field2.getSize() + WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(field2.getSize())
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun writeTo (output: CodedOutputStream): Unit {
|
|
||||||
output.writeTag(1, WireType.LENGTH_DELIMITED)
|
|
||||||
output.writeInt32NoTag(field1.getSize())
|
|
||||||
field1.writeTo(output)
|
|
||||||
}
|
|
||||||
|
|
||||||
class BuilderLevel1 constructor (field1: Level1.Level2 = Level1.Level2.BuilderLevel2().build()) {
|
|
||||||
var field1 : Level1.Level2
|
|
||||||
private set
|
|
||||||
fun setField1(value: Level1.Level2): Level1.BuilderLevel1 {
|
|
||||||
field1 = value
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.field1 = field1
|
|
||||||
}
|
|
||||||
|
|
||||||
fun readFrom (input: CodedInputStream): Level1.BuilderLevel1 {
|
|
||||||
input.readTag(1, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
field1.mergeFrom(input)
|
|
||||||
if (expectedSize != field1.getSize()) { throw InvalidProtocolBufferException ("Expected size ${expectedSize} got ${field1.getSize()}") }
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun build(): Level1 {
|
|
||||||
return Level1(field1)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun parseFieldFrom(input: CodedInputStream): Boolean {
|
|
||||||
if (input.isAtEnd()) { return false }
|
|
||||||
val tag = input.readInt32NoTag()
|
|
||||||
if (tag == 0) { return false }
|
|
||||||
val fieldNumber = WireFormat.getTagFieldNumber(tag)
|
|
||||||
val wireType = WireFormat.getTagWireType(tag)
|
|
||||||
when(fieldNumber) {
|
|
||||||
1 -> {
|
|
||||||
input.readTag(1, WireType.LENGTH_DELIMITED)
|
|
||||||
val expectedSize = input.readInt32NoTag()
|
|
||||||
field1.mergeFrom(input)
|
|
||||||
if (expectedSize != field1.getSize()) { throw InvalidProtocolBufferException ("Expected size ${expectedSize} got ${field1.getSize()}") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true}
|
|
||||||
fun parseFrom(input: CodedInputStream): Level1.BuilderLevel1 {
|
|
||||||
while(parseFieldFrom(input)) {}
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += field1.getSize() + WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(field1.getSize())
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fun mergeWith (other: Level1) {
|
|
||||||
field1 = other.field1
|
|
||||||
}
|
|
||||||
|
|
||||||
fun mergeFrom (input: CodedInputStream) {
|
|
||||||
val builder = Level1.BuilderLevel1()
|
|
||||||
mergeWith(builder.parseFrom(input).build())}
|
|
||||||
fun getSize(): Int {
|
|
||||||
var size = 0
|
|
||||||
size += field1.getSize() + WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED) + WireFormat.getVarint32Size(field1.getSize())
|
|
||||||
return size
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user