Protobuf: added tests for nativ environment
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
testTrivialValues() == 0
|
||||||
|
testMaxValues() == 0
|
||||||
|
testMinValues() == 0
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
testTrivialLocationResponse() == 0
|
||||||
|
testMaxLocationResponse() == 0
|
||||||
|
testMinLocationResponse() == 0
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
testThirdCase() == 0
|
||||||
|
testSecondCase() == 0
|
||||||
|
testFirstCase() == 0
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
testArraysOfDefaultValues() == 0
|
||||||
|
testArraysOfMinValues() == 0
|
||||||
|
testArraysOfMaxValues() == 0
|
||||||
|
testRepVarints() == 0
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
testRepZigZag() == 0
|
||||||
|
testArraysOfMinValues() == 0
|
||||||
|
testArraysOfMaxValues() == 0
|
||||||
|
testArraysOfDefaultValues() == 0
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
testTagToShuffled() == 0
|
||||||
|
testShuffledToTag() == 0
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
testVarintDefaultMessage() == 0
|
||||||
|
testVarintTrivialMessage() == 0
|
||||||
|
testVarintNegativeMessage() == 0
|
||||||
|
testVarintMaxValues() == 0
|
||||||
|
testVarintMinValues() == 0
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
testZigZagDefaultValues() == 0
|
||||||
|
testZigZagRandomValues() == 0
|
||||||
|
testZigZagNegativeValues() == 0
|
||||||
|
testZigZagPositiveValues() == 0
|
||||||
|
testZigZagMaxValues() == 0
|
||||||
|
testZigZagMinValues() == 0
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,466 @@
|
|||||||
|
class LocationResponse private constructor (var locationResponseData: LocationResponse.LocationData, var code: Int, var errorMsg: Int) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//message locationResponseData = 1
|
||||||
|
|
||||||
|
//int32 code = 2
|
||||||
|
|
||||||
|
//int32 errorMsg = 3
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Nested classes declarations ===========
|
||||||
|
class LocationData private constructor (var x: Int, var y: Int, var angle: Int) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//int32 x = 1
|
||||||
|
|
||||||
|
//int32 y = 2
|
||||||
|
|
||||||
|
//int32 angle = 3
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//int32 x = 1
|
||||||
|
if (x != 0) {
|
||||||
|
output.writeInt32 (1, x)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 y = 2
|
||||||
|
if (y != 0) {
|
||||||
|
output.writeInt32 (2, y)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 angle = 3
|
||||||
|
if (angle != 0) {
|
||||||
|
output.writeInt32 (3, angle)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeWith (other: LocationResponse.LocationData) {
|
||||||
|
x = other.x
|
||||||
|
y = other.y
|
||||||
|
angle = other.angle
|
||||||
|
this.errorCode = other.errorCode
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
|
||||||
|
val builder = LocationResponse.LocationData.BuilderLocationData(0, 0, 0)
|
||||||
|
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFrom (input: CodedInputStream) {
|
||||||
|
val builder = LocationResponse.LocationData.BuilderLocationData(0, 0, 0)
|
||||||
|
mergeWith(builder.parseFrom(input).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (x != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, x)
|
||||||
|
}
|
||||||
|
if (y != 0) {
|
||||||
|
size += WireFormat.getInt32Size(2, y)
|
||||||
|
}
|
||||||
|
if (angle != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3, angle)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (x != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, x)
|
||||||
|
}
|
||||||
|
if (y != 0) {
|
||||||
|
size += WireFormat.getInt32Size(2, y)
|
||||||
|
}
|
||||||
|
if (angle != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3, angle)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Builder ===========
|
||||||
|
class BuilderLocationData constructor (var x: Int, var y: Int, var angle: Int) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//int32 x = 1
|
||||||
|
fun setX(value: Int): LocationResponse.LocationData.BuilderLocationData {
|
||||||
|
x = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 y = 2
|
||||||
|
fun setY(value: Int): LocationResponse.LocationData.BuilderLocationData {
|
||||||
|
y = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 angle = 3
|
||||||
|
fun setAngle(value: Int): LocationResponse.LocationData.BuilderLocationData {
|
||||||
|
angle = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//int32 x = 1
|
||||||
|
if (x != 0) {
|
||||||
|
output.writeInt32 (1, x)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 y = 2
|
||||||
|
if (y != 0) {
|
||||||
|
output.writeInt32 (2, y)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 angle = 3
|
||||||
|
if (angle != 0) {
|
||||||
|
output.writeInt32 (3, angle)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Mutating methods ===========
|
||||||
|
fun build(): LocationResponse.LocationData {
|
||||||
|
val res = LocationResponse.LocationData(x, y, angle)
|
||||||
|
res.errorCode = errorCode
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
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 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
x = input.readInt32NoTag()
|
||||||
|
}
|
||||||
|
2 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
y = input.readInt32NoTag()
|
||||||
|
}
|
||||||
|
3 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
angle = input.readInt32NoTag()
|
||||||
|
}
|
||||||
|
else -> errorCode = 4
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): LocationResponse.LocationData.BuilderLocationData {
|
||||||
|
while(getSizeNoTag() < expectedSize) {
|
||||||
|
parseFieldFrom(input)
|
||||||
|
}
|
||||||
|
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFrom(input: CodedInputStream): LocationResponse.LocationData.BuilderLocationData {
|
||||||
|
while(parseFieldFrom(input)) {}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (x != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, x)
|
||||||
|
}
|
||||||
|
if (y != 0) {
|
||||||
|
size += WireFormat.getInt32Size(2, y)
|
||||||
|
}
|
||||||
|
if (angle != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3, angle)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (x != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, x)
|
||||||
|
}
|
||||||
|
if (y != 0) {
|
||||||
|
size += WireFormat.getInt32Size(2, y)
|
||||||
|
}
|
||||||
|
if (angle != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3, angle)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//message locationResponseData = 1
|
||||||
|
output.writeTag(1, WireType.LENGTH_DELIMITED)
|
||||||
|
output.writeInt32NoTag(locationResponseData.getSizeNoTag())
|
||||||
|
locationResponseData.writeTo(output)
|
||||||
|
|
||||||
|
//int32 code = 2
|
||||||
|
if (code != 0) {
|
||||||
|
output.writeInt32 (2, code)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 errorMsg = 3
|
||||||
|
if (errorMsg != 0) {
|
||||||
|
output.writeInt32 (3, errorMsg)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeWith (other: LocationResponse) {
|
||||||
|
locationResponseData = other.locationResponseData
|
||||||
|
code = other.code
|
||||||
|
errorMsg = other.errorMsg
|
||||||
|
this.errorCode = other.errorCode
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
|
||||||
|
val builder = LocationResponse.BuilderLocationResponse(LocationResponse.LocationData.BuilderLocationData(0, 0, 0).build(), 0, 0)
|
||||||
|
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFrom (input: CodedInputStream) {
|
||||||
|
val builder = LocationResponse.BuilderLocationResponse(LocationResponse.LocationData.BuilderLocationData(0, 0, 0).build(), 0, 0)
|
||||||
|
mergeWith(builder.parseFrom(input).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (locationResponseData != LocationResponse.LocationData.BuilderLocationData(0, 0, 0).build()) {
|
||||||
|
size += locationResponseData.getSize(1)
|
||||||
|
}
|
||||||
|
if (code != 0) {
|
||||||
|
size += WireFormat.getInt32Size(2, code)
|
||||||
|
}
|
||||||
|
if (errorMsg != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3, errorMsg)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (locationResponseData != LocationResponse.LocationData.BuilderLocationData(0, 0, 0).build()) {
|
||||||
|
size += locationResponseData.getSize(1)
|
||||||
|
}
|
||||||
|
if (code != 0) {
|
||||||
|
size += WireFormat.getInt32Size(2, code)
|
||||||
|
}
|
||||||
|
if (errorMsg != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3, errorMsg)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Builder ===========
|
||||||
|
class BuilderLocationResponse constructor (var locationResponseData: LocationResponse.LocationData, var code: Int, var errorMsg: Int) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//message locationResponseData = 1
|
||||||
|
fun setLocationResponseData(value: LocationResponse.LocationData): LocationResponse.BuilderLocationResponse {
|
||||||
|
locationResponseData = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 code = 2
|
||||||
|
fun setCode(value: Int): LocationResponse.BuilderLocationResponse {
|
||||||
|
code = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 errorMsg = 3
|
||||||
|
fun setErrorMsg(value: Int): LocationResponse.BuilderLocationResponse {
|
||||||
|
errorMsg = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//message locationResponseData = 1
|
||||||
|
output.writeTag(1, WireType.LENGTH_DELIMITED)
|
||||||
|
output.writeInt32NoTag(locationResponseData.getSizeNoTag())
|
||||||
|
locationResponseData.writeTo(output)
|
||||||
|
|
||||||
|
//int32 code = 2
|
||||||
|
if (code != 0) {
|
||||||
|
output.writeInt32 (2, code)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 errorMsg = 3
|
||||||
|
if (errorMsg != 0) {
|
||||||
|
output.writeInt32 (3, errorMsg)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Mutating methods ===========
|
||||||
|
fun build(): LocationResponse {
|
||||||
|
val res = LocationResponse(locationResponseData, code, errorMsg)
|
||||||
|
res.errorCode = errorCode
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
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 -> {
|
||||||
|
if (wireType.id != WireType.LENGTH_DELIMITED.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
do {
|
||||||
|
val expectedSize = input.readInt32NoTag()
|
||||||
|
locationResponseData.mergeFromWithSize(input, expectedSize)
|
||||||
|
if (expectedSize != locationResponseData.getSizeNoTag()) { errorCode = 3; return false }
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
2 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
code = input.readInt32NoTag()
|
||||||
|
}
|
||||||
|
3 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
errorMsg = input.readInt32NoTag()
|
||||||
|
}
|
||||||
|
else -> errorCode = 4
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): LocationResponse.BuilderLocationResponse {
|
||||||
|
while(getSizeNoTag() < expectedSize) {
|
||||||
|
parseFieldFrom(input)
|
||||||
|
}
|
||||||
|
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFrom(input: CodedInputStream): LocationResponse.BuilderLocationResponse {
|
||||||
|
while(parseFieldFrom(input)) {}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (locationResponseData != LocationResponse.LocationData.BuilderLocationData(0, 0, 0).build()) {
|
||||||
|
size += locationResponseData.getSize(1)
|
||||||
|
}
|
||||||
|
if (code != 0) {
|
||||||
|
size += WireFormat.getInt32Size(2, code)
|
||||||
|
}
|
||||||
|
if (errorMsg != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3, errorMsg)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (locationResponseData != LocationResponse.LocationData.BuilderLocationData(0, 0, 0).build()) {
|
||||||
|
size += locationResponseData.getSize(1)
|
||||||
|
}
|
||||||
|
if (code != 0) {
|
||||||
|
size += WireFormat.getInt32Size(2, code)
|
||||||
|
}
|
||||||
|
if (errorMsg != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3, errorMsg)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareLocationDatas(lhs: LocationResponse.LocationData, rhs: LocationResponse.LocationData): Boolean {
|
||||||
|
return (lhs.angle == rhs.angle) and (lhs.x == rhs.x) and (lhs.y == rhs.y)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareLocationResponses(lhs: LocationResponse, rhs: LocationResponse): Boolean {
|
||||||
|
return (lhs.code == rhs.code) and
|
||||||
|
(lhs.errorMsg == rhs.errorMsg) and
|
||||||
|
compareLocationDatas(lhs.locationResponseData, rhs.locationResponseData)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun buildLocationResponse(code: Int, errorMsg: Int, angle: Int, x: Int, y: Int): LocationResponse.BuilderLocationResponse {
|
||||||
|
return LocationResponse.BuilderLocationResponse(
|
||||||
|
LocationResponse.LocationData.BuilderLocationData(
|
||||||
|
x, y, angle
|
||||||
|
).build(),
|
||||||
|
code,
|
||||||
|
errorMsg
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkLocationResponse(msg: LocationResponse): Int {
|
||||||
|
val outs = CodedOutputStream(ByteArray(msg.getSizeNoTag()))
|
||||||
|
msg.writeTo(outs)
|
||||||
|
|
||||||
|
val ins = CodedInputStream(outs.buffer)
|
||||||
|
val readMsg = buildLocationResponse(0, 0, 0, 0, 0).parseFrom(ins).build()
|
||||||
|
|
||||||
|
if (readMsg.errorCode != 0) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if (compareLocationResponses(msg, readMsg)) {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testTrivialLocationResponse(): Int {
|
||||||
|
val msg = buildLocationResponse(3125321, -12673123, 4334, 423542673, 234516534).build()
|
||||||
|
return checkLocationResponse(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testMaxLocationResponse(): Int {
|
||||||
|
val msg = buildLocationResponse(2147483647, 2147483647, 2147483647, 2147483647, 2147483647).build()
|
||||||
|
return checkLocationResponse(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testMinLocationResponse(): Int {
|
||||||
|
val msg = buildLocationResponse(-2147483647, -2147483647, -2147483647, -2147483647, -2147483647).build()
|
||||||
|
return checkLocationResponse(msg)
|
||||||
|
}
|
||||||
@@ -0,0 +1,495 @@
|
|||||||
|
class ThirdMessage private constructor (var second_msg: SecondMessage) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//message second_msg = 1
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//message second_msg = 1
|
||||||
|
output.writeTag(1, WireType.LENGTH_DELIMITED)
|
||||||
|
output.writeInt32NoTag(second_msg.getSizeNoTag())
|
||||||
|
second_msg.writeTo(output)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeWith (other: ThirdMessage) {
|
||||||
|
second_msg = other.second_msg
|
||||||
|
this.errorCode = other.errorCode
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
|
||||||
|
val builder = ThirdMessage.BuilderThirdMessage(SecondMessage.BuilderSecondMessage(FirstMessage.BuilderFirstMessage(0).build()).build())
|
||||||
|
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFrom (input: CodedInputStream) {
|
||||||
|
val builder = ThirdMessage.BuilderThirdMessage(SecondMessage.BuilderSecondMessage(FirstMessage.BuilderFirstMessage(0).build()).build())
|
||||||
|
mergeWith(builder.parseFrom(input).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (second_msg != SecondMessage.BuilderSecondMessage(FirstMessage.BuilderFirstMessage(0).build()).build()) {
|
||||||
|
size += second_msg.getSize(1)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (second_msg != SecondMessage.BuilderSecondMessage(FirstMessage.BuilderFirstMessage(0).build()).build()) {
|
||||||
|
size += second_msg.getSize(1)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Builder ===========
|
||||||
|
class BuilderThirdMessage constructor (var second_msg: SecondMessage) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//message second_msg = 1
|
||||||
|
fun setSecond_msg(value: SecondMessage): ThirdMessage.BuilderThirdMessage {
|
||||||
|
second_msg = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//message second_msg = 1
|
||||||
|
output.writeTag(1, WireType.LENGTH_DELIMITED)
|
||||||
|
output.writeInt32NoTag(second_msg.getSizeNoTag())
|
||||||
|
second_msg.writeTo(output)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Mutating methods ===========
|
||||||
|
fun build(): ThirdMessage {
|
||||||
|
val res = ThirdMessage(second_msg)
|
||||||
|
res.errorCode = errorCode
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
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 -> {
|
||||||
|
if (wireType.id != WireType.LENGTH_DELIMITED.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
do {
|
||||||
|
val expectedSize = input.readInt32NoTag()
|
||||||
|
second_msg.mergeFromWithSize(input, expectedSize)
|
||||||
|
if (expectedSize != second_msg.getSizeNoTag()) { errorCode = 3; return false }
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
else -> errorCode = 4
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): ThirdMessage.BuilderThirdMessage {
|
||||||
|
while(getSizeNoTag() < expectedSize) {
|
||||||
|
parseFieldFrom(input)
|
||||||
|
}
|
||||||
|
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFrom(input: CodedInputStream): ThirdMessage.BuilderThirdMessage {
|
||||||
|
while(parseFieldFrom(input)) {}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (second_msg != SecondMessage.BuilderSecondMessage(FirstMessage.BuilderFirstMessage(0).build()).build()) {
|
||||||
|
size += second_msg.getSize(1)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (second_msg != SecondMessage.BuilderSecondMessage(FirstMessage.BuilderFirstMessage(0).build()).build()) {
|
||||||
|
size += second_msg.getSize(1)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class SecondMessage private constructor (var first_msg: FirstMessage) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//message first_msg = 1
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//message first_msg = 1
|
||||||
|
output.writeTag(1, WireType.LENGTH_DELIMITED)
|
||||||
|
output.writeInt32NoTag(first_msg.getSizeNoTag())
|
||||||
|
first_msg.writeTo(output)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeWith (other: SecondMessage) {
|
||||||
|
first_msg = other.first_msg
|
||||||
|
this.errorCode = other.errorCode
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
|
||||||
|
val builder = SecondMessage.BuilderSecondMessage(FirstMessage.BuilderFirstMessage(0).build())
|
||||||
|
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFrom (input: CodedInputStream) {
|
||||||
|
val builder = SecondMessage.BuilderSecondMessage(FirstMessage.BuilderFirstMessage(0).build())
|
||||||
|
mergeWith(builder.parseFrom(input).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (first_msg != FirstMessage.BuilderFirstMessage(0).build()) {
|
||||||
|
size += first_msg.getSize(1)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (first_msg != FirstMessage.BuilderFirstMessage(0).build()) {
|
||||||
|
size += first_msg.getSize(1)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Builder ===========
|
||||||
|
class BuilderSecondMessage constructor (var first_msg: FirstMessage) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//message first_msg = 1
|
||||||
|
fun setFirst_msg(value: FirstMessage): SecondMessage.BuilderSecondMessage {
|
||||||
|
first_msg = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//message first_msg = 1
|
||||||
|
output.writeTag(1, WireType.LENGTH_DELIMITED)
|
||||||
|
output.writeInt32NoTag(first_msg.getSizeNoTag())
|
||||||
|
first_msg.writeTo(output)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Mutating methods ===========
|
||||||
|
fun build(): SecondMessage {
|
||||||
|
val res = SecondMessage(first_msg)
|
||||||
|
res.errorCode = errorCode
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
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 -> {
|
||||||
|
if (wireType.id != WireType.LENGTH_DELIMITED.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
do {
|
||||||
|
val expectedSize = input.readInt32NoTag()
|
||||||
|
first_msg.mergeFromWithSize(input, expectedSize)
|
||||||
|
if (expectedSize != first_msg.getSizeNoTag()) { errorCode = 3; return false }
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
else -> errorCode = 4
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): SecondMessage.BuilderSecondMessage {
|
||||||
|
while(getSizeNoTag() < expectedSize) {
|
||||||
|
parseFieldFrom(input)
|
||||||
|
}
|
||||||
|
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFrom(input: CodedInputStream): SecondMessage.BuilderSecondMessage {
|
||||||
|
while(parseFieldFrom(input)) {}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (first_msg != FirstMessage.BuilderFirstMessage(0).build()) {
|
||||||
|
size += first_msg.getSize(1)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (first_msg != FirstMessage.BuilderFirstMessage(0).build()) {
|
||||||
|
size += first_msg.getSize(1)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class FirstMessage private constructor (var int_field: Int) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//int32 int_field = 1
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//int32 int_field = 1
|
||||||
|
if (int_field != 0) {
|
||||||
|
output.writeInt32 (1, int_field)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeWith (other: FirstMessage) {
|
||||||
|
int_field = other.int_field
|
||||||
|
this.errorCode = other.errorCode
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
|
||||||
|
val builder = FirstMessage.BuilderFirstMessage(0)
|
||||||
|
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFrom (input: CodedInputStream) {
|
||||||
|
val builder = FirstMessage.BuilderFirstMessage(0)
|
||||||
|
mergeWith(builder.parseFrom(input).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int_field != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, int_field)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int_field != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, int_field)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Builder ===========
|
||||||
|
class BuilderFirstMessage constructor (var int_field: Int) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//int32 int_field = 1
|
||||||
|
fun setInt_field(value: Int): FirstMessage.BuilderFirstMessage {
|
||||||
|
int_field = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//int32 int_field = 1
|
||||||
|
if (int_field != 0) {
|
||||||
|
output.writeInt32 (1, int_field)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Mutating methods ===========
|
||||||
|
fun build(): FirstMessage {
|
||||||
|
val res = FirstMessage(int_field)
|
||||||
|
res.errorCode = errorCode
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
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 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
int_field = input.readInt32NoTag()
|
||||||
|
}
|
||||||
|
else -> errorCode = 4
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): FirstMessage.BuilderFirstMessage {
|
||||||
|
while(getSizeNoTag() < expectedSize) {
|
||||||
|
parseFieldFrom(input)
|
||||||
|
}
|
||||||
|
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFrom(input: CodedInputStream): FirstMessage.BuilderFirstMessage {
|
||||||
|
while(parseFieldFrom(input)) {}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int_field != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, int_field)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int_field != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, int_field)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareThirdMessages(kt1: ThirdMessage, kt2: ThirdMessage): Boolean {
|
||||||
|
return kt1.second_msg.first_msg.int_field == kt2.second_msg.first_msg.int_field
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareSecondMessages(lhs: SecondMessage, rhs: SecondMessage): Boolean {
|
||||||
|
return lhs.first_msg.int_field == rhs.first_msg.int_field
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareFirstMessages(lhs: FirstMessage, rhs: FirstMessage): Boolean {
|
||||||
|
return lhs.int_field == rhs.int_field
|
||||||
|
}
|
||||||
|
|
||||||
|
fun buildThirdMessage(value: Int): ThirdMessage.BuilderThirdMessage {
|
||||||
|
return ThirdMessage.BuilderThirdMessage(
|
||||||
|
SecondMessage.BuilderSecondMessage(
|
||||||
|
FirstMessage.BuilderFirstMessage(
|
||||||
|
value
|
||||||
|
).build()
|
||||||
|
).build()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun buildSecondMessage(value: Int): SecondMessage.BuilderSecondMessage {
|
||||||
|
return SecondMessage.BuilderSecondMessage(
|
||||||
|
FirstMessage.BuilderFirstMessage(
|
||||||
|
value
|
||||||
|
).build()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun buildFirstMessage(value: Int): FirstMessage.BuilderFirstMessage {
|
||||||
|
return FirstMessage.BuilderFirstMessage(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkThird(msg: ThirdMessage): Int {
|
||||||
|
val outs = CodedOutputStream(ByteArray(msg.getSizeNoTag()))
|
||||||
|
msg.writeTo(outs)
|
||||||
|
|
||||||
|
val ins = CodedInputStream(outs.buffer)
|
||||||
|
val readMsg = buildThirdMessage(0).parseFrom(ins).build()
|
||||||
|
|
||||||
|
if (readMsg.errorCode != 0) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if (compareThirdMessages(msg, readMsg)) {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkSecond(msg: SecondMessage): Int {
|
||||||
|
val outs = CodedOutputStream(ByteArray(msg.getSizeNoTag()))
|
||||||
|
msg.writeTo(outs)
|
||||||
|
|
||||||
|
val ins = CodedInputStream(outs.buffer)
|
||||||
|
val readMsg = buildSecondMessage(0).parseFrom(ins).build()
|
||||||
|
|
||||||
|
if (readMsg.errorCode != 0) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if (compareSecondMessages(msg, readMsg)) {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkFirst(msg: FirstMessage): Int {
|
||||||
|
val outs = CodedOutputStream(ByteArray(msg.getSizeNoTag()))
|
||||||
|
msg.writeTo(outs)
|
||||||
|
|
||||||
|
val ins = CodedInputStream(outs.buffer)
|
||||||
|
val readMsg = buildFirstMessage(0).parseFrom(ins).build()
|
||||||
|
|
||||||
|
if (readMsg.errorCode != 0) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if (compareFirstMessages(msg, readMsg)) {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testThirdCase(): Int {
|
||||||
|
val msg = buildThirdMessage(5).build()
|
||||||
|
return checkThird(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testSecondCase(): Int {
|
||||||
|
val msg = buildSecondMessage(-31241501).build()
|
||||||
|
return checkSecond(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testFirstCase(): Int {
|
||||||
|
val msg = buildFirstMessage(321311430).build()
|
||||||
|
return checkFirst(msg)
|
||||||
|
}
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,546 @@
|
|||||||
|
class MessageRepeatedZigZag private constructor (var int: IntArray, var long: LongArray) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//repeated sint32 int = 1
|
||||||
|
|
||||||
|
//repeated sint64 long = 2
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//repeated sint32 int = 1
|
||||||
|
if (int.size > 0) {
|
||||||
|
output.writeTag(1, WireType.LENGTH_DELIMITED)
|
||||||
|
var arrayByteSize = 0
|
||||||
|
|
||||||
|
if (int.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
var i = 0
|
||||||
|
while (i < int.size) {
|
||||||
|
arraySize += WireFormat.getSInt32SizeNoTag(int[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
arrayByteSize += arraySize
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
output.writeInt32NoTag(arrayByteSize)
|
||||||
|
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while (i < int.size) {
|
||||||
|
output.writeSInt32NoTag (int[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
//repeated sint64 long = 2
|
||||||
|
if (long.size > 0) {
|
||||||
|
output.writeTag(2, WireType.LENGTH_DELIMITED)
|
||||||
|
var arrayByteSize = 0
|
||||||
|
|
||||||
|
if (long.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
var i = 0
|
||||||
|
while (i < long.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(long[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
arrayByteSize += arraySize
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
output.writeInt32NoTag(arrayByteSize)
|
||||||
|
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while (i < long.size) {
|
||||||
|
output.writeSInt64NoTag (long[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeWith (other: MessageRepeatedZigZag) {
|
||||||
|
int = int.plus((other.int))
|
||||||
|
long = long.plus((other.long))
|
||||||
|
this.errorCode = other.errorCode
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
|
||||||
|
val builder = MessageRepeatedZigZag.BuilderMessageRepeatedZigZag(IntArray(0), LongArray(0))
|
||||||
|
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFrom (input: CodedInputStream) {
|
||||||
|
val builder = MessageRepeatedZigZag.BuilderMessageRepeatedZigZag(IntArray(0), LongArray(0))
|
||||||
|
mergeWith(builder.parseFrom(input).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < int.size) {
|
||||||
|
arraySize += WireFormat.getSInt32SizeNoTag(int[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (long.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < long.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(long[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < int.size) {
|
||||||
|
arraySize += WireFormat.getSInt32SizeNoTag(int[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (long.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < long.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(long[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Builder ===========
|
||||||
|
class BuilderMessageRepeatedZigZag constructor (var int: IntArray, var long: LongArray) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//repeated sint32 int = 1
|
||||||
|
fun setInt(value: IntArray): MessageRepeatedZigZag.BuilderMessageRepeatedZigZag {
|
||||||
|
int = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
fun setintByIndex(index: Int, value: Int): MessageRepeatedZigZag.BuilderMessageRepeatedZigZag {
|
||||||
|
int[index] = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//repeated sint64 long = 2
|
||||||
|
fun setLong(value: LongArray): MessageRepeatedZigZag.BuilderMessageRepeatedZigZag {
|
||||||
|
long = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
fun setlongByIndex(index: Int, value: Long): MessageRepeatedZigZag.BuilderMessageRepeatedZigZag {
|
||||||
|
long[index] = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//repeated sint32 int = 1
|
||||||
|
if (int.size > 0) {
|
||||||
|
output.writeTag(1, WireType.LENGTH_DELIMITED)
|
||||||
|
var arrayByteSize = 0
|
||||||
|
|
||||||
|
if (int.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
var i = 0
|
||||||
|
while (i < int.size) {
|
||||||
|
arraySize += WireFormat.getSInt32SizeNoTag(int[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
arrayByteSize += arraySize
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
output.writeInt32NoTag(arrayByteSize)
|
||||||
|
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while (i < int.size) {
|
||||||
|
output.writeSInt32NoTag (int[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
//repeated sint64 long = 2
|
||||||
|
if (long.size > 0) {
|
||||||
|
output.writeTag(2, WireType.LENGTH_DELIMITED)
|
||||||
|
var arrayByteSize = 0
|
||||||
|
|
||||||
|
if (long.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
var i = 0
|
||||||
|
while (i < long.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(long[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
arrayByteSize += arraySize
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
output.writeInt32NoTag(arrayByteSize)
|
||||||
|
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while (i < long.size) {
|
||||||
|
output.writeSInt64NoTag (long[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Mutating methods ===========
|
||||||
|
fun build(): MessageRepeatedZigZag {
|
||||||
|
val res = MessageRepeatedZigZag(int, long)
|
||||||
|
res.errorCode = errorCode
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
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 -> {
|
||||||
|
if (wireType.id != WireType.LENGTH_DELIMITED.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
val expectedByteSize = input.readInt32NoTag()
|
||||||
|
var newArray = IntArray(0)
|
||||||
|
var readSize = 0
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while(readSize < expectedByteSize) {
|
||||||
|
var tmp = IntArray(1)
|
||||||
|
tmp[0] = input.readSInt32NoTag()
|
||||||
|
newArray = newArray.plus(tmp)
|
||||||
|
readSize += WireFormat.getSInt32SizeNoTag(tmp[0])
|
||||||
|
}
|
||||||
|
int = newArray
|
||||||
|
} while (false)
|
||||||
|
}
|
||||||
|
2 -> {
|
||||||
|
if (wireType.id != WireType.LENGTH_DELIMITED.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
val expectedByteSize = input.readInt32NoTag()
|
||||||
|
var newArray = LongArray(0)
|
||||||
|
var readSize = 0
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while(readSize < expectedByteSize) {
|
||||||
|
var tmp = LongArray(1)
|
||||||
|
tmp[0] = input.readSInt64NoTag()
|
||||||
|
newArray = newArray.plus(tmp)
|
||||||
|
readSize += WireFormat.getSInt64SizeNoTag(tmp[0])
|
||||||
|
}
|
||||||
|
long = newArray
|
||||||
|
} while (false)
|
||||||
|
}
|
||||||
|
else -> errorCode = 4
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): MessageRepeatedZigZag.BuilderMessageRepeatedZigZag {
|
||||||
|
while(getSizeNoTag() < expectedSize) {
|
||||||
|
parseFieldFrom(input)
|
||||||
|
}
|
||||||
|
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFrom(input: CodedInputStream): MessageRepeatedZigZag.BuilderMessageRepeatedZigZag {
|
||||||
|
while(parseFieldFrom(input)) {}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < int.size) {
|
||||||
|
arraySize += WireFormat.getSInt32SizeNoTag(int[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (long.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < long.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(long[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < int.size) {
|
||||||
|
arraySize += WireFormat.getSInt32SizeNoTag(int[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (long.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < long.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(long[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareIntArrays(lhs: IntArray, rhs: IntArray): Boolean {
|
||||||
|
if (lhs.size != rhs.size) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var i = 0
|
||||||
|
while (i < lhs.size) {
|
||||||
|
if (lhs[i] != rhs[i]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareLongArrays(lhs: LongArray, rhs: LongArray): Boolean {
|
||||||
|
if (lhs.size != rhs.size) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var i = 0
|
||||||
|
while (i < lhs.size) {
|
||||||
|
if (lhs[i] != rhs[i]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareBooleanArrays(lhs: BooleanArray, rhs: BooleanArray): Boolean {
|
||||||
|
if (lhs.size != rhs.size) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var i = 0
|
||||||
|
while (i < lhs.size) {
|
||||||
|
if (lhs[i] != rhs[i]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareRepeatedZigZags(kt1: MessageRepeatedZigZag, kt2: MessageRepeatedZigZag): Boolean {
|
||||||
|
return compareIntArrays(kt1.int, kt2.int) and
|
||||||
|
compareLongArrays(kt1.long, kt2.long)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkRepZZSerializationIdentity(msg: MessageRepeatedZigZag): Int {
|
||||||
|
val outs = CodedOutputStream(ByteArray(msg.getSizeNoTag()))
|
||||||
|
msg.writeTo(outs)
|
||||||
|
|
||||||
|
val ins = CodedInputStream(outs.buffer)
|
||||||
|
val readMsg = MessageRepeatedZigZag.BuilderMessageRepeatedZigZag(
|
||||||
|
IntArray(0),
|
||||||
|
LongArray(0)
|
||||||
|
).parseFrom(ins).build()
|
||||||
|
|
||||||
|
if (readMsg.errorCode != 0) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if (compareRepeatedZigZags(msg, readMsg)) {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
object Rng {
|
||||||
|
var rngState = 0.6938893903907228
|
||||||
|
|
||||||
|
val point = 762939453125
|
||||||
|
fun rng(): Double {
|
||||||
|
val res = rngState - rngState.toInt().toDouble()
|
||||||
|
rngState *= point.toDouble()
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun nextInt(minVal: Int, maxVal: Int): Int {
|
||||||
|
return (Rng.rng() * (maxVal - minVal + 1).toDouble()).toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun nextLong(): Long {
|
||||||
|
val lowerHalf = nextInt(-2147483647, 2147483647)
|
||||||
|
val upperHalf = nextInt(-2147483647, 2147483647)
|
||||||
|
return (upperHalf.toLong() shl 32) + lowerHalf.toLong()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun generateIntArray(): IntArray {
|
||||||
|
val size = nextInt(0, 10000)
|
||||||
|
val arr = IntArray(size)
|
||||||
|
var i = 0
|
||||||
|
while (i < size) {
|
||||||
|
arr[i] = nextInt(-2147483647, 2147483647)
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
return arr
|
||||||
|
}
|
||||||
|
|
||||||
|
fun generateLongArray(): LongArray {
|
||||||
|
val size = nextInt(0, 10000)
|
||||||
|
val arr = LongArray(size)
|
||||||
|
var i = 0
|
||||||
|
while (i < size) {
|
||||||
|
arr[i] = nextLong()
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
return arr
|
||||||
|
}
|
||||||
|
|
||||||
|
fun generateRandomMessage(): MessageRepeatedZigZag {
|
||||||
|
return MessageRepeatedZigZag.BuilderMessageRepeatedZigZag(
|
||||||
|
generateIntArray(),
|
||||||
|
generateLongArray()
|
||||||
|
).build()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testRepZigZag(): Int {
|
||||||
|
var i = 0
|
||||||
|
val testRuns = 100
|
||||||
|
while (i < 100) {
|
||||||
|
val msg = generateRandomMessage()
|
||||||
|
if (checkRepZZSerializationIdentity(msg) == 1) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testArraysOfMinValues(): Int {
|
||||||
|
val intArr = IntArray(100)
|
||||||
|
var i = 0
|
||||||
|
while (i < 100) {
|
||||||
|
intArr[i] = -2147483647
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
val longArr = LongArray(100)
|
||||||
|
i = 0
|
||||||
|
while (i < 100) {
|
||||||
|
longArr[i] = -9223372036854775807L
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
val msg = MessageRepeatedZigZag.BuilderMessageRepeatedZigZag(intArr, longArr).build()
|
||||||
|
return checkRepZZSerializationIdentity(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testArraysOfMaxValues(): Int {
|
||||||
|
val intArr = IntArray(100)
|
||||||
|
var i = 0
|
||||||
|
while (i < 100) {
|
||||||
|
intArr[i] = 2147483647
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
val longArr = LongArray(100)
|
||||||
|
i = 0
|
||||||
|
while (i < 100) {
|
||||||
|
longArr[i] = 9223372036854775807L
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
val msg = MessageRepeatedZigZag.BuilderMessageRepeatedZigZag(intArr, longArr).build()
|
||||||
|
return checkRepZZSerializationIdentity(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testArraysOfDefaultValues(): Int {
|
||||||
|
val intArr = IntArray(100)
|
||||||
|
|
||||||
|
val longArr = LongArray(100)
|
||||||
|
|
||||||
|
val msg = MessageRepeatedZigZag.BuilderMessageRepeatedZigZag(intArr, longArr).build()
|
||||||
|
return checkRepZZSerializationIdentity(msg)
|
||||||
|
}
|
||||||
@@ -0,0 +1,788 @@
|
|||||||
|
class TagOrder private constructor (var sint: Int, var int: Int, var slong_array: LongArray, var enum_field: TagOrder.Enum) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//sint32 sint = 8
|
||||||
|
|
||||||
|
//int32 int = 3423
|
||||||
|
|
||||||
|
//repeated sint64 slong_array = 12321
|
||||||
|
|
||||||
|
//enum enum_field = 938423
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Nested enums declarations ===========
|
||||||
|
enum class Enum(val id: Int) {
|
||||||
|
first_val (0),
|
||||||
|
second_val (1),
|
||||||
|
Unexpected(2);
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun fromIntToEnum (ord: Int): Enum {
|
||||||
|
return when (ord) {
|
||||||
|
0 -> Enum.first_val
|
||||||
|
1 -> Enum.second_val
|
||||||
|
else -> Unexpected
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//sint32 sint = 8
|
||||||
|
if (sint != 0) {
|
||||||
|
output.writeSInt32 (8, sint)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 int = 3423
|
||||||
|
if (int != 0) {
|
||||||
|
output.writeInt32 (3423, int)
|
||||||
|
}
|
||||||
|
|
||||||
|
//repeated sint64 slong_array = 12321
|
||||||
|
if (slong_array.size > 0) {
|
||||||
|
output.writeTag(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var arrayByteSize = 0
|
||||||
|
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
arrayByteSize += arraySize
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
output.writeInt32NoTag(arrayByteSize)
|
||||||
|
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
output.writeSInt64NoTag (slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
//enum enum_field = 938423
|
||||||
|
if (enum_field.id != TagOrder.Enum.fromIntToEnum(0).id) {
|
||||||
|
output.writeEnum (938423, enum_field.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeWith (other: TagOrder) {
|
||||||
|
sint = other.sint
|
||||||
|
int = other.int
|
||||||
|
slong_array = slong_array.plus((other.slong_array))
|
||||||
|
enum_field = other.enum_field
|
||||||
|
this.errorCode = other.errorCode
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
|
||||||
|
val builder = TagOrder.BuilderTagOrder(0, 0, LongArray(0), TagOrder.Enum.fromIntToEnum(0))
|
||||||
|
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFrom (input: CodedInputStream) {
|
||||||
|
val builder = TagOrder.BuilderTagOrder(0, 0, LongArray(0), TagOrder.Enum.fromIntToEnum(0))
|
||||||
|
mergeWith(builder.parseFrom(input).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(8, sint)
|
||||||
|
}
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3423, int)
|
||||||
|
}
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (enum_field != TagOrder.Enum.fromIntToEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(938423, enum_field.id)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(8, sint)
|
||||||
|
}
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3423, int)
|
||||||
|
}
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (enum_field != TagOrder.Enum.fromIntToEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(938423, enum_field.id)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Builder ===========
|
||||||
|
class BuilderTagOrder constructor (var sint: Int, var int: Int, var slong_array: LongArray, var enum_field: TagOrder.Enum) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//sint32 sint = 8
|
||||||
|
fun setSint(value: Int): TagOrder.BuilderTagOrder {
|
||||||
|
sint = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 int = 3423
|
||||||
|
fun setInt(value: Int): TagOrder.BuilderTagOrder {
|
||||||
|
int = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//repeated sint64 slong_array = 12321
|
||||||
|
fun setSlong_array(value: LongArray): TagOrder.BuilderTagOrder {
|
||||||
|
slong_array = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
fun setslong_arrayByIndex(index: Int, value: Long): TagOrder.BuilderTagOrder {
|
||||||
|
slong_array[index] = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//enum enum_field = 938423
|
||||||
|
fun setEnum_field(value: TagOrder.Enum): TagOrder.BuilderTagOrder {
|
||||||
|
enum_field = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//sint32 sint = 8
|
||||||
|
if (sint != 0) {
|
||||||
|
output.writeSInt32 (8, sint)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 int = 3423
|
||||||
|
if (int != 0) {
|
||||||
|
output.writeInt32 (3423, int)
|
||||||
|
}
|
||||||
|
|
||||||
|
//repeated sint64 slong_array = 12321
|
||||||
|
if (slong_array.size > 0) {
|
||||||
|
output.writeTag(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var arrayByteSize = 0
|
||||||
|
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
arrayByteSize += arraySize
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
output.writeInt32NoTag(arrayByteSize)
|
||||||
|
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
output.writeSInt64NoTag (slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
//enum enum_field = 938423
|
||||||
|
if (enum_field.id != TagOrder.Enum.fromIntToEnum(0).id) {
|
||||||
|
output.writeEnum (938423, enum_field.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Mutating methods ===========
|
||||||
|
fun build(): TagOrder {
|
||||||
|
val res = TagOrder(sint, int, slong_array, enum_field)
|
||||||
|
res.errorCode = errorCode
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
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) {
|
||||||
|
8 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
sint = input.readSInt32NoTag()
|
||||||
|
}
|
||||||
|
3423 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
int = input.readInt32NoTag()
|
||||||
|
}
|
||||||
|
12321 -> {
|
||||||
|
if (wireType.id != WireType.LENGTH_DELIMITED.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
val expectedByteSize = input.readInt32NoTag()
|
||||||
|
var newArray = LongArray(0)
|
||||||
|
var readSize = 0
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while(readSize < expectedByteSize) {
|
||||||
|
var tmp = LongArray(1)
|
||||||
|
tmp[0] = input.readSInt64NoTag()
|
||||||
|
newArray = newArray.plus(tmp)
|
||||||
|
readSize += WireFormat.getSInt64SizeNoTag(tmp[0])
|
||||||
|
}
|
||||||
|
slong_array = newArray
|
||||||
|
} while (false)
|
||||||
|
}
|
||||||
|
938423 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
enum_field = TagOrder.Enum.fromIntToEnum(input.readEnumNoTag())
|
||||||
|
}
|
||||||
|
else -> errorCode = 4
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): TagOrder.BuilderTagOrder {
|
||||||
|
while(getSizeNoTag() < expectedSize) {
|
||||||
|
parseFieldFrom(input)
|
||||||
|
}
|
||||||
|
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFrom(input: CodedInputStream): TagOrder.BuilderTagOrder {
|
||||||
|
while(parseFieldFrom(input)) {}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(8, sint)
|
||||||
|
}
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3423, int)
|
||||||
|
}
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (enum_field != TagOrder.Enum.fromIntToEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(938423, enum_field.id)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(8, sint)
|
||||||
|
}
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3423, int)
|
||||||
|
}
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (enum_field != TagOrder.Enum.fromIntToEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(938423, enum_field.id)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class TagOrderShuffled private constructor (var sint: Int, var int: Int, var slong_array: LongArray, var enum_field: TagOrderShuffled.Enum) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//sint32 sint = 8
|
||||||
|
|
||||||
|
//int32 int = 3423
|
||||||
|
|
||||||
|
//repeated sint64 slong_array = 12321
|
||||||
|
|
||||||
|
//enum enum_field = 938423
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Nested enums declarations ===========
|
||||||
|
enum class Enum(val id: Int) {
|
||||||
|
first_val (0),
|
||||||
|
second_val (1),
|
||||||
|
Unexpected(2);
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun fromIntToEnum (ord: Int): Enum {
|
||||||
|
return when (ord) {
|
||||||
|
0 -> Enum.first_val
|
||||||
|
1 -> Enum.second_val
|
||||||
|
else -> Unexpected
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//sint32 sint = 8
|
||||||
|
if (sint != 0) {
|
||||||
|
output.writeSInt32 (8, sint)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 int = 3423
|
||||||
|
if (int != 0) {
|
||||||
|
output.writeInt32 (3423, int)
|
||||||
|
}
|
||||||
|
|
||||||
|
//repeated sint64 slong_array = 12321
|
||||||
|
if (slong_array.size > 0) {
|
||||||
|
output.writeTag(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var arrayByteSize = 0
|
||||||
|
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
arrayByteSize += arraySize
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
output.writeInt32NoTag(arrayByteSize)
|
||||||
|
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
output.writeSInt64NoTag (slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
//enum enum_field = 938423
|
||||||
|
if (enum_field.id != TagOrderShuffled.Enum.fromIntToEnum(0).id) {
|
||||||
|
output.writeEnum (938423, enum_field.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeWith (other: TagOrderShuffled) {
|
||||||
|
sint = other.sint
|
||||||
|
int = other.int
|
||||||
|
slong_array = slong_array.plus((other.slong_array))
|
||||||
|
enum_field = other.enum_field
|
||||||
|
this.errorCode = other.errorCode
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
|
||||||
|
val builder = TagOrderShuffled.BuilderTagOrderShuffled(0, 0, LongArray(0), TagOrderShuffled.Enum.fromIntToEnum(0))
|
||||||
|
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFrom (input: CodedInputStream) {
|
||||||
|
val builder = TagOrderShuffled.BuilderTagOrderShuffled(0, 0, LongArray(0), TagOrderShuffled.Enum.fromIntToEnum(0))
|
||||||
|
mergeWith(builder.parseFrom(input).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(8, sint)
|
||||||
|
}
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3423, int)
|
||||||
|
}
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (enum_field != TagOrderShuffled.Enum.fromIntToEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(938423, enum_field.id)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(8, sint)
|
||||||
|
}
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3423, int)
|
||||||
|
}
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (enum_field != TagOrderShuffled.Enum.fromIntToEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(938423, enum_field.id)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Builder ===========
|
||||||
|
class BuilderTagOrderShuffled constructor (var sint: Int, var int: Int, var slong_array: LongArray, var enum_field: TagOrderShuffled.Enum) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//sint32 sint = 8
|
||||||
|
fun setSint(value: Int): TagOrderShuffled.BuilderTagOrderShuffled {
|
||||||
|
sint = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 int = 3423
|
||||||
|
fun setInt(value: Int): TagOrderShuffled.BuilderTagOrderShuffled {
|
||||||
|
int = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//repeated sint64 slong_array = 12321
|
||||||
|
fun setSlong_array(value: LongArray): TagOrderShuffled.BuilderTagOrderShuffled {
|
||||||
|
slong_array = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
fun setslong_arrayByIndex(index: Int, value: Long): TagOrderShuffled.BuilderTagOrderShuffled {
|
||||||
|
slong_array[index] = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//enum enum_field = 938423
|
||||||
|
fun setEnum_field(value: TagOrderShuffled.Enum): TagOrderShuffled.BuilderTagOrderShuffled {
|
||||||
|
enum_field = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//sint32 sint = 8
|
||||||
|
if (sint != 0) {
|
||||||
|
output.writeSInt32 (8, sint)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int32 int = 3423
|
||||||
|
if (int != 0) {
|
||||||
|
output.writeInt32 (3423, int)
|
||||||
|
}
|
||||||
|
|
||||||
|
//repeated sint64 slong_array = 12321
|
||||||
|
if (slong_array.size > 0) {
|
||||||
|
output.writeTag(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var arrayByteSize = 0
|
||||||
|
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
arrayByteSize += arraySize
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
output.writeInt32NoTag(arrayByteSize)
|
||||||
|
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
output.writeSInt64NoTag (slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
//enum enum_field = 938423
|
||||||
|
if (enum_field.id != TagOrderShuffled.Enum.fromIntToEnum(0).id) {
|
||||||
|
output.writeEnum (938423, enum_field.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Mutating methods ===========
|
||||||
|
fun build(): TagOrderShuffled {
|
||||||
|
val res = TagOrderShuffled(sint, int, slong_array, enum_field)
|
||||||
|
res.errorCode = errorCode
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
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) {
|
||||||
|
8 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
sint = input.readSInt32NoTag()
|
||||||
|
}
|
||||||
|
3423 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
int = input.readInt32NoTag()
|
||||||
|
}
|
||||||
|
12321 -> {
|
||||||
|
if (wireType.id != WireType.LENGTH_DELIMITED.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
val expectedByteSize = input.readInt32NoTag()
|
||||||
|
var newArray = LongArray(0)
|
||||||
|
var readSize = 0
|
||||||
|
do {
|
||||||
|
var i = 0
|
||||||
|
while(readSize < expectedByteSize) {
|
||||||
|
var tmp = LongArray(1)
|
||||||
|
tmp[0] = input.readSInt64NoTag()
|
||||||
|
newArray = newArray.plus(tmp)
|
||||||
|
readSize += WireFormat.getSInt64SizeNoTag(tmp[0])
|
||||||
|
}
|
||||||
|
slong_array = newArray
|
||||||
|
} while (false)
|
||||||
|
}
|
||||||
|
938423 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
enum_field = TagOrderShuffled.Enum.fromIntToEnum(input.readEnumNoTag())
|
||||||
|
}
|
||||||
|
else -> errorCode = 4
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): TagOrderShuffled.BuilderTagOrderShuffled {
|
||||||
|
while(getSizeNoTag() < expectedSize) {
|
||||||
|
parseFieldFrom(input)
|
||||||
|
}
|
||||||
|
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFrom(input: CodedInputStream): TagOrderShuffled.BuilderTagOrderShuffled {
|
||||||
|
while(parseFieldFrom(input)) {}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(8, sint)
|
||||||
|
}
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3423, int)
|
||||||
|
}
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (enum_field != TagOrderShuffled.Enum.fromIntToEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(938423, enum_field.id)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(8, sint)
|
||||||
|
}
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(3423, int)
|
||||||
|
}
|
||||||
|
if (slong_array.size != 0) {
|
||||||
|
do {
|
||||||
|
var arraySize = 0
|
||||||
|
size += WireFormat.getTagSize(12321, WireType.LENGTH_DELIMITED)
|
||||||
|
var i = 0
|
||||||
|
while (i < slong_array.size) {
|
||||||
|
arraySize += WireFormat.getSInt64SizeNoTag(slong_array[i])
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
size += arraySize
|
||||||
|
size += WireFormat.getInt32SizeNoTag(arraySize)
|
||||||
|
} while(false)
|
||||||
|
}
|
||||||
|
if (enum_field != TagOrderShuffled.Enum.fromIntToEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(938423, enum_field.id)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareLongArrays(lhs: LongArray, rhs: LongArray): Boolean {
|
||||||
|
if (lhs.size != rhs.size) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var i = 0
|
||||||
|
while (i < lhs.size) {
|
||||||
|
if (lhs[i] != rhs[i]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareTagAndShuffledTag(kt1: TagOrder, kt2: TagOrderShuffled): Boolean {
|
||||||
|
return (kt1.enum_field.id == kt2.enum_field.id) and
|
||||||
|
(kt1.int == kt2.int) and
|
||||||
|
(kt1.sint == kt2.sint) and
|
||||||
|
compareLongArrays(kt1.slong_array, kt2.slong_array)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkTagToShuffled(msg: TagOrder): Int {
|
||||||
|
val outs = CodedOutputStream(ByteArray(msg.getSizeNoTag()))
|
||||||
|
msg.writeTo(outs)
|
||||||
|
|
||||||
|
val ins = CodedInputStream(outs.buffer)
|
||||||
|
val readMsg = TagOrderShuffled.BuilderTagOrderShuffled(0, 0, LongArray(0), TagOrderShuffled.Enum.first_val).parseFrom(ins).build()
|
||||||
|
|
||||||
|
if (compareTagAndShuffledTag(msg, readMsg)) {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkShuffledToTag(msg: TagOrderShuffled): Int {
|
||||||
|
val outs = CodedOutputStream(ByteArray(msg.getSizeNoTag()))
|
||||||
|
msg.writeTo(outs)
|
||||||
|
|
||||||
|
val ins = CodedInputStream(outs.buffer)
|
||||||
|
val readMsg = TagOrder.BuilderTagOrder(0, 0, LongArray(0), TagOrder.Enum.first_val).parseFrom(ins).build()
|
||||||
|
|
||||||
|
if (readMsg.errorCode != 0) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if (compareTagAndShuffledTag(readMsg, msg)) {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testTagToShuffled(): Int {
|
||||||
|
val arr = LongArray(3)
|
||||||
|
arr[0] = 94289342345678289L
|
||||||
|
arr[1] = -423643342423442342L
|
||||||
|
|
||||||
|
val msg = TagOrder.BuilderTagOrder(312321, -34268, arr, TagOrder.Enum.first_val).build()
|
||||||
|
return checkTagToShuffled(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testShuffledToTag(): Int {
|
||||||
|
val arr = LongArray(3)
|
||||||
|
arr[0] = 94289342345678289L
|
||||||
|
arr[1] = -423643342423442342L
|
||||||
|
|
||||||
|
val msg = TagOrderShuffled.BuilderTagOrderShuffled(312321, -34268, arr, TagOrderShuffled.Enum.first_val).build()
|
||||||
|
return checkShuffledToTag(msg)
|
||||||
|
}
|
||||||
@@ -0,0 +1,491 @@
|
|||||||
|
class MessageVarints private constructor (var int: Int, var long: Long, var sint: Int, var slong: Long, var bl: Boolean, var enumField: MessageVarints.TestEnum, var uint: Int, var ulong: Long) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//int32 int = 1
|
||||||
|
|
||||||
|
//int64 long = 2
|
||||||
|
|
||||||
|
//sint32 sint = 3
|
||||||
|
|
||||||
|
//sint64 slong = 4
|
||||||
|
|
||||||
|
//bool bl = 5
|
||||||
|
|
||||||
|
//enum enumField = 6
|
||||||
|
|
||||||
|
//uint32 uint = 7
|
||||||
|
|
||||||
|
//uint64 ulong = 8
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Nested enums declarations ===========
|
||||||
|
enum class TestEnum(val id: Int) {
|
||||||
|
firstVal (0),
|
||||||
|
secondVal (1),
|
||||||
|
thirdVal (2),
|
||||||
|
Unexpected(3);
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun fromIntToTestEnum (ord: Int): TestEnum {
|
||||||
|
return when (ord) {
|
||||||
|
0 -> TestEnum.firstVal
|
||||||
|
1 -> TestEnum.secondVal
|
||||||
|
2 -> TestEnum.thirdVal
|
||||||
|
else -> Unexpected
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//int32 int = 1
|
||||||
|
if (int != 0) {
|
||||||
|
output.writeInt32 (1, int)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int64 long = 2
|
||||||
|
if (long != 0L) {
|
||||||
|
output.writeInt64 (2, long)
|
||||||
|
}
|
||||||
|
|
||||||
|
//sint32 sint = 3
|
||||||
|
if (sint != 0) {
|
||||||
|
output.writeSInt32 (3, sint)
|
||||||
|
}
|
||||||
|
|
||||||
|
//sint64 slong = 4
|
||||||
|
if (slong != 0L) {
|
||||||
|
output.writeSInt64 (4, slong)
|
||||||
|
}
|
||||||
|
|
||||||
|
//bool bl = 5
|
||||||
|
if (bl != false) {
|
||||||
|
output.writeBool (5, bl)
|
||||||
|
}
|
||||||
|
|
||||||
|
//enum enumField = 6
|
||||||
|
if (enumField.id != MessageVarints.TestEnum.fromIntToTestEnum(0).id) {
|
||||||
|
output.writeEnum (6, enumField.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
//uint32 uint = 7
|
||||||
|
if (uint != 0) {
|
||||||
|
output.writeUInt32 (7, uint)
|
||||||
|
}
|
||||||
|
|
||||||
|
//uint64 ulong = 8
|
||||||
|
if (ulong != 0L) {
|
||||||
|
output.writeUInt64 (8, ulong)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeWith (other: MessageVarints) {
|
||||||
|
int = other.int
|
||||||
|
long = other.long
|
||||||
|
sint = other.sint
|
||||||
|
slong = other.slong
|
||||||
|
bl = other.bl
|
||||||
|
enumField = other.enumField
|
||||||
|
uint = other.uint
|
||||||
|
ulong = other.ulong
|
||||||
|
this.errorCode = other.errorCode
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
|
||||||
|
val builder = MessageVarints.BuilderMessageVarints(0, 0L, 0, 0L, false, MessageVarints.TestEnum.fromIntToTestEnum(0), 0, 0L)
|
||||||
|
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFrom (input: CodedInputStream) {
|
||||||
|
val builder = MessageVarints.BuilderMessageVarints(0, 0L, 0, 0L, false, MessageVarints.TestEnum.fromIntToTestEnum(0), 0, 0L)
|
||||||
|
mergeWith(builder.parseFrom(input).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, int)
|
||||||
|
}
|
||||||
|
if (long != 0L) {
|
||||||
|
size += WireFormat.getInt64Size(2, long)
|
||||||
|
}
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(3, sint)
|
||||||
|
}
|
||||||
|
if (slong != 0L) {
|
||||||
|
size += WireFormat.getSInt64Size(4, slong)
|
||||||
|
}
|
||||||
|
if (bl != false) {
|
||||||
|
size += WireFormat.getBoolSize(5, bl)
|
||||||
|
}
|
||||||
|
if (enumField != MessageVarints.TestEnum.fromIntToTestEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(6, enumField.id)
|
||||||
|
}
|
||||||
|
if (uint != 0) {
|
||||||
|
size += WireFormat.getUInt32Size(7, uint)
|
||||||
|
}
|
||||||
|
if (ulong != 0L) {
|
||||||
|
size += WireFormat.getUInt64Size(8, ulong)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, int)
|
||||||
|
}
|
||||||
|
if (long != 0L) {
|
||||||
|
size += WireFormat.getInt64Size(2, long)
|
||||||
|
}
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(3, sint)
|
||||||
|
}
|
||||||
|
if (slong != 0L) {
|
||||||
|
size += WireFormat.getSInt64Size(4, slong)
|
||||||
|
}
|
||||||
|
if (bl != false) {
|
||||||
|
size += WireFormat.getBoolSize(5, bl)
|
||||||
|
}
|
||||||
|
if (enumField != MessageVarints.TestEnum.fromIntToTestEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(6, enumField.id)
|
||||||
|
}
|
||||||
|
if (uint != 0) {
|
||||||
|
size += WireFormat.getUInt32Size(7, uint)
|
||||||
|
}
|
||||||
|
if (ulong != 0L) {
|
||||||
|
size += WireFormat.getUInt64Size(8, ulong)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Builder ===========
|
||||||
|
class BuilderMessageVarints constructor (var int: Int, var long: Long, var sint: Int, var slong: Long, var bl: Boolean, var enumField: MessageVarints.TestEnum, var uint: Int, var ulong: Long) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//int32 int = 1
|
||||||
|
fun setInt(value: Int): MessageVarints.BuilderMessageVarints {
|
||||||
|
int = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//int64 long = 2
|
||||||
|
fun setLong(value: Long): MessageVarints.BuilderMessageVarints {
|
||||||
|
long = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//sint32 sint = 3
|
||||||
|
fun setSint(value: Int): MessageVarints.BuilderMessageVarints {
|
||||||
|
sint = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//sint64 slong = 4
|
||||||
|
fun setSlong(value: Long): MessageVarints.BuilderMessageVarints {
|
||||||
|
slong = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//bool bl = 5
|
||||||
|
fun setBl(value: Boolean): MessageVarints.BuilderMessageVarints {
|
||||||
|
bl = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//enum enumField = 6
|
||||||
|
fun setEnumField(value: MessageVarints.TestEnum): MessageVarints.BuilderMessageVarints {
|
||||||
|
enumField = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//uint32 uint = 7
|
||||||
|
fun setUint(value: Int): MessageVarints.BuilderMessageVarints {
|
||||||
|
uint = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//uint64 ulong = 8
|
||||||
|
fun setUlong(value: Long): MessageVarints.BuilderMessageVarints {
|
||||||
|
ulong = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//int32 int = 1
|
||||||
|
if (int != 0) {
|
||||||
|
output.writeInt32 (1, int)
|
||||||
|
}
|
||||||
|
|
||||||
|
//int64 long = 2
|
||||||
|
if (long != 0L) {
|
||||||
|
output.writeInt64 (2, long)
|
||||||
|
}
|
||||||
|
|
||||||
|
//sint32 sint = 3
|
||||||
|
if (sint != 0) {
|
||||||
|
output.writeSInt32 (3, sint)
|
||||||
|
}
|
||||||
|
|
||||||
|
//sint64 slong = 4
|
||||||
|
if (slong != 0L) {
|
||||||
|
output.writeSInt64 (4, slong)
|
||||||
|
}
|
||||||
|
|
||||||
|
//bool bl = 5
|
||||||
|
if (bl != false) {
|
||||||
|
output.writeBool (5, bl)
|
||||||
|
}
|
||||||
|
|
||||||
|
//enum enumField = 6
|
||||||
|
if (enumField.id != MessageVarints.TestEnum.fromIntToTestEnum(0).id) {
|
||||||
|
output.writeEnum (6, enumField.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
//uint32 uint = 7
|
||||||
|
if (uint != 0) {
|
||||||
|
output.writeUInt32 (7, uint)
|
||||||
|
}
|
||||||
|
|
||||||
|
//uint64 ulong = 8
|
||||||
|
if (ulong != 0L) {
|
||||||
|
output.writeUInt64 (8, ulong)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Mutating methods ===========
|
||||||
|
fun build(): MessageVarints {
|
||||||
|
val res = MessageVarints(int, long, sint, slong, bl, enumField, uint, ulong)
|
||||||
|
res.errorCode = errorCode
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
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 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
int = input.readInt32NoTag()
|
||||||
|
}
|
||||||
|
2 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
long = input.readInt64NoTag()
|
||||||
|
}
|
||||||
|
3 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
sint = input.readSInt32NoTag()
|
||||||
|
}
|
||||||
|
4 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
slong = input.readSInt64NoTag()
|
||||||
|
}
|
||||||
|
5 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
bl = input.readBoolNoTag()
|
||||||
|
}
|
||||||
|
6 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
enumField = MessageVarints.TestEnum.fromIntToTestEnum(input.readEnumNoTag())
|
||||||
|
}
|
||||||
|
7 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
uint = input.readUInt32NoTag()
|
||||||
|
}
|
||||||
|
8 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
ulong = input.readUInt64NoTag()
|
||||||
|
}
|
||||||
|
else -> errorCode = 4
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): MessageVarints.BuilderMessageVarints {
|
||||||
|
while(getSizeNoTag() < expectedSize) {
|
||||||
|
parseFieldFrom(input)
|
||||||
|
}
|
||||||
|
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFrom(input: CodedInputStream): MessageVarints.BuilderMessageVarints {
|
||||||
|
while(parseFieldFrom(input)) {}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, int)
|
||||||
|
}
|
||||||
|
if (long != 0L) {
|
||||||
|
size += WireFormat.getInt64Size(2, long)
|
||||||
|
}
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(3, sint)
|
||||||
|
}
|
||||||
|
if (slong != 0L) {
|
||||||
|
size += WireFormat.getSInt64Size(4, slong)
|
||||||
|
}
|
||||||
|
if (bl != false) {
|
||||||
|
size += WireFormat.getBoolSize(5, bl)
|
||||||
|
}
|
||||||
|
if (enumField != MessageVarints.TestEnum.fromIntToTestEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(6, enumField.id)
|
||||||
|
}
|
||||||
|
if (uint != 0) {
|
||||||
|
size += WireFormat.getUInt32Size(7, uint)
|
||||||
|
}
|
||||||
|
if (ulong != 0L) {
|
||||||
|
size += WireFormat.getUInt64Size(8, ulong)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getInt32Size(1, int)
|
||||||
|
}
|
||||||
|
if (long != 0L) {
|
||||||
|
size += WireFormat.getInt64Size(2, long)
|
||||||
|
}
|
||||||
|
if (sint != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(3, sint)
|
||||||
|
}
|
||||||
|
if (slong != 0L) {
|
||||||
|
size += WireFormat.getSInt64Size(4, slong)
|
||||||
|
}
|
||||||
|
if (bl != false) {
|
||||||
|
size += WireFormat.getBoolSize(5, bl)
|
||||||
|
}
|
||||||
|
if (enumField != MessageVarints.TestEnum.fromIntToTestEnum(0)) {
|
||||||
|
size += WireFormat.getEnumSize(6, enumField.id)
|
||||||
|
}
|
||||||
|
if (uint != 0) {
|
||||||
|
size += WireFormat.getUInt32Size(7, uint)
|
||||||
|
}
|
||||||
|
if (ulong != 0L) {
|
||||||
|
size += WireFormat.getUInt64Size(8, ulong)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareVarints(kt1: MessageVarints, kt2: MessageVarints): Boolean {
|
||||||
|
return (kt1.int == kt2.int) and
|
||||||
|
(kt1.long == kt2.long) and
|
||||||
|
(kt1.sint == kt2.sint) and
|
||||||
|
(kt1.slong == kt2.slong) and
|
||||||
|
(kt1.bl == kt2.bl) and
|
||||||
|
(kt1.uint == kt2.uint) and
|
||||||
|
(kt1.ulong == kt2.ulong) and
|
||||||
|
(kt1.enumField.id == kt2.enumField.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkVarintsSerializationIdentity(msg: MessageVarints): Int {
|
||||||
|
val outs = CodedOutputStream(ByteArray(msg.getSizeNoTag()))
|
||||||
|
msg.writeTo(outs)
|
||||||
|
|
||||||
|
val ins = CodedInputStream(outs.buffer)
|
||||||
|
val readMsg = MessageVarints.BuilderMessageVarints(0, 0L, 0, 0L, false, MessageVarints.TestEnum.fromIntToTestEnum(0), 0, 0L)
|
||||||
|
.parseFrom(ins).build()
|
||||||
|
|
||||||
|
if (readMsg.errorCode != 0) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if (compareVarints(msg, readMsg)) {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testVarintDefaultMessage(): Int {
|
||||||
|
val msg = MessageVarints.BuilderMessageVarints(0, 0L, 0, 0L, false, MessageVarints.TestEnum.fromIntToTestEnum(0), 0, 0L).build()
|
||||||
|
return checkVarintsSerializationIdentity(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testVarintTrivialMessage(): Int {
|
||||||
|
val msg = MessageVarints.BuilderMessageVarints(
|
||||||
|
21312, -2131231231L, 5346734, 42121313211L, true, MessageVarints.TestEnum.fromIntToTestEnum(2), 3672356, 3478787863467834678L
|
||||||
|
).build()
|
||||||
|
return checkVarintsSerializationIdentity(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testVarintNegativeMessage(): Int {
|
||||||
|
val msg = MessageVarints.BuilderMessageVarints(
|
||||||
|
-312732, -2131231231L, -5346734, -42121313211L, true, MessageVarints.TestEnum.fromIntToTestEnum(3), 3672356, 3478787863467834678L
|
||||||
|
).build()
|
||||||
|
|
||||||
|
return checkVarintsSerializationIdentity(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testVarintMaxValues(): Int {
|
||||||
|
val msg = MessageVarints.BuilderMessageVarints(
|
||||||
|
2147483647,
|
||||||
|
9223372036854775807L,
|
||||||
|
2147483647,
|
||||||
|
9223372036854775807L,
|
||||||
|
true,
|
||||||
|
MessageVarints.TestEnum.fromIntToTestEnum(3),
|
||||||
|
2147483647,
|
||||||
|
9223372036854775807L
|
||||||
|
).build()
|
||||||
|
|
||||||
|
return checkVarintsSerializationIdentity(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testVarintMinValues(): Int {
|
||||||
|
val msg = MessageVarints.BuilderMessageVarints(
|
||||||
|
-2147483647,
|
||||||
|
-9223372036854775807L,
|
||||||
|
-2147483647,
|
||||||
|
-9223372036854775807L,
|
||||||
|
false,
|
||||||
|
MessageVarints.TestEnum.fromIntToTestEnum(0),
|
||||||
|
-2147483647,
|
||||||
|
-9223372036854775807L
|
||||||
|
).build()
|
||||||
|
|
||||||
|
return checkVarintsSerializationIdentity(msg)
|
||||||
|
}
|
||||||
@@ -0,0 +1,217 @@
|
|||||||
|
class MessageZigZag private constructor (var int: Int, var long: Long) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//sint32 int = 1
|
||||||
|
|
||||||
|
//sint64 long = 2
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//sint32 int = 1
|
||||||
|
if (int != 0) {
|
||||||
|
output.writeSInt32 (1, int)
|
||||||
|
}
|
||||||
|
|
||||||
|
//sint64 long = 2
|
||||||
|
if (long != 0L) {
|
||||||
|
output.writeSInt64 (2, long)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeWith (other: MessageZigZag) {
|
||||||
|
int = other.int
|
||||||
|
long = other.long
|
||||||
|
this.errorCode = other.errorCode
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
|
||||||
|
val builder = MessageZigZag.BuilderMessageZigZag(0, 0L)
|
||||||
|
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mergeFrom (input: CodedInputStream) {
|
||||||
|
val builder = MessageZigZag.BuilderMessageZigZag(0, 0L)
|
||||||
|
mergeWith(builder.parseFrom(input).build())
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(1, int)
|
||||||
|
}
|
||||||
|
if (long != 0L) {
|
||||||
|
size += WireFormat.getSInt64Size(2, long)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(1, int)
|
||||||
|
}
|
||||||
|
if (long != 0L) {
|
||||||
|
size += WireFormat.getSInt64Size(2, long)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Builder ===========
|
||||||
|
class BuilderMessageZigZag constructor (var int: Int, var long: Long) {
|
||||||
|
//========== Properties ===========
|
||||||
|
//sint32 int = 1
|
||||||
|
fun setInt(value: Int): MessageZigZag.BuilderMessageZigZag {
|
||||||
|
int = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//sint64 long = 2
|
||||||
|
fun setLong(value: Long): MessageZigZag.BuilderMessageZigZag {
|
||||||
|
long = value
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorCode: Int = 0
|
||||||
|
|
||||||
|
//========== Serialization methods ===========
|
||||||
|
fun writeTo (output: CodedOutputStream) {
|
||||||
|
//sint32 int = 1
|
||||||
|
if (int != 0) {
|
||||||
|
output.writeSInt32 (1, int)
|
||||||
|
}
|
||||||
|
|
||||||
|
//sint64 long = 2
|
||||||
|
if (long != 0L) {
|
||||||
|
output.writeSInt64 (2, long)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Mutating methods ===========
|
||||||
|
fun build(): MessageZigZag {
|
||||||
|
val res = MessageZigZag(int, long)
|
||||||
|
res.errorCode = errorCode
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
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 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
int = input.readSInt32NoTag()
|
||||||
|
}
|
||||||
|
2 -> {
|
||||||
|
if (wireType.id != WireType.VARINT.id) {
|
||||||
|
errorCode = 1
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
long = input.readSInt64NoTag()
|
||||||
|
}
|
||||||
|
else -> errorCode = 4
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): MessageZigZag.BuilderMessageZigZag {
|
||||||
|
while(getSizeNoTag() < expectedSize) {
|
||||||
|
parseFieldFrom(input)
|
||||||
|
}
|
||||||
|
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseFrom(input: CodedInputStream): MessageZigZag.BuilderMessageZigZag {
|
||||||
|
while(parseFieldFrom(input)) {}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
//========== Size-related methods ===========
|
||||||
|
fun getSize(fieldNumber: Int): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(1, int)
|
||||||
|
}
|
||||||
|
if (long != 0L) {
|
||||||
|
size += WireFormat.getSInt64Size(2, long)
|
||||||
|
}
|
||||||
|
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSizeNoTag(): Int {
|
||||||
|
var size = 0
|
||||||
|
if (int != 0) {
|
||||||
|
size += WireFormat.getSInt32Size(1, int)
|
||||||
|
}
|
||||||
|
if (long != 0L) {
|
||||||
|
size += WireFormat.getSInt64Size(2, long)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compareZigZags(kt1: MessageZigZag, kt2: MessageZigZag): Boolean {
|
||||||
|
return (kt1.int == kt2.int) and (kt1.long == kt2.long)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkZigZagSerializationIdentity(msg: MessageZigZag): Int {
|
||||||
|
val outs = CodedOutputStream(ByteArray(msg.getSizeNoTag()))
|
||||||
|
msg.writeTo(outs)
|
||||||
|
|
||||||
|
val ins = CodedInputStream(outs.buffer)
|
||||||
|
val readMsg = MessageZigZag.BuilderMessageZigZag(0, 0L).parseFrom(ins).build()
|
||||||
|
|
||||||
|
if (readMsg.errorCode != 0) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if (compareZigZags(msg, readMsg)) {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testZigZagDefaultValues(): Int {
|
||||||
|
val msg = MessageZigZag.BuilderMessageZigZag(0, 0L).build()
|
||||||
|
return checkZigZagSerializationIdentity(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testZigZagRandomValues(): Int {
|
||||||
|
val msg = MessageZigZag.BuilderMessageZigZag(321782363, -466328364782634782L).build()
|
||||||
|
return checkZigZagSerializationIdentity(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testZigZagNegativeValues(): Int {
|
||||||
|
val msg = MessageZigZag.BuilderMessageZigZag(-1321782363, -323721963313L).build()
|
||||||
|
return checkZigZagSerializationIdentity(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testZigZagPositiveValues(): Int {
|
||||||
|
val msg = MessageZigZag.BuilderMessageZigZag(4788923, 240384293674L).build()
|
||||||
|
return checkZigZagSerializationIdentity(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testZigZagMaxValues(): Int {
|
||||||
|
val msg = MessageZigZag.BuilderMessageZigZag(2147483647, 9223372036854775807L).build()
|
||||||
|
return checkZigZagSerializationIdentity(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testZigZagMinValues(): Int {
|
||||||
|
val msg = MessageZigZag.BuilderMessageZigZag(-2147483647, -9223372036854775807L).build()
|
||||||
|
return checkZigZagSerializationIdentity(msg)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user