translator: fix protobufs, fix build, array test, cleanup

This commit is contained in:
e5l
2016-08-16 14:12:02 +03:00
parent e35b6897a8
commit 9671d19535
11 changed files with 492 additions and 367 deletions
+1 -1
View File
@@ -22,7 +22,7 @@ KT=$(TRANSLATOR_DIR)/build/libs/translator-1.0.jar
LD=arm-none-eabi-ld
OBJ_COPY=arm-none-eabi-objcopy
GDB=arm-none-eabi-gdb
PROTOC=$(PWD)/../proto/build/protoc
PROTOC=$(PWD)/../proto/compiler/build/protoc
LL=llc-3.6
LLINK=llvm-link-3.6
+35 -16
View File
@@ -7,7 +7,7 @@ class DirectionRequest private constructor (var command: DirectionRequest.Comman
var errorCode: Int = 0
//========== Nested enums declarations ===========
enum class Command(val ord: Int) {
enum class Command(val id: Int) {
stop (0),
forward (1),
backward (2),
@@ -31,8 +31,8 @@ class DirectionRequest private constructor (var command: DirectionRequest.Comman
//========== Serialization methods ===========
fun writeTo (output: CodedOutputStream) {
//enum command = 1
if (command != DirectionRequest.Command.fromIntToCommand(0)) {
output.writeEnum (1, command.ord)
if (command.id != DirectionRequest.Command.fromIntToCommand(0).id) {
output.writeEnum (1, command.id)
}
//int32 sid = 2
@@ -45,6 +45,7 @@ class DirectionRequest private constructor (var command: DirectionRequest.Comman
fun mergeWith (other: DirectionRequest) {
command = other.command
sid = other.sid
this.errorCode = other.errorCode
}
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
@@ -61,7 +62,7 @@ class DirectionRequest private constructor (var command: DirectionRequest.Comman
fun getSize(fieldNumber: Int): Int {
var size = 0
if (command != DirectionRequest.Command.fromIntToCommand(0)) {
size += WireFormat.getEnumSize(1, command.ord)
size += WireFormat.getEnumSize(1, command.id)
}
if (sid != 0) {
size += WireFormat.getInt32Size(2, sid)
@@ -73,7 +74,7 @@ class DirectionRequest private constructor (var command: DirectionRequest.Comman
fun getSizeNoTag(): Int {
var size = 0
if (command != DirectionRequest.Command.fromIntToCommand(0)) {
size += WireFormat.getEnumSize(1, command.ord)
size += WireFormat.getEnumSize(1, command.id)
}
if (sid != 0) {
size += WireFormat.getInt32Size(2, sid)
@@ -101,8 +102,8 @@ class DirectionRequest private constructor (var command: DirectionRequest.Comman
//========== Serialization methods ===========
fun writeTo (output: CodedOutputStream) {
//enum command = 1
if (command != DirectionRequest.Command.fromIntToCommand(0)) {
output.writeEnum (1, command.ord)
if (command.id != DirectionRequest.Command.fromIntToCommand(0).id) {
output.writeEnum (1, command.id)
}
//int32 sid = 2
@@ -114,7 +115,9 @@ class DirectionRequest private constructor (var command: DirectionRequest.Comman
//========== Mutating methods ===========
fun build(): DirectionRequest {
return DirectionRequest(command, sid)
val res = DirectionRequest(command, sid)
res.errorCode = errorCode
return res
}
fun parseFieldFrom(input: CodedInputStream): Boolean {
@@ -125,15 +128,23 @@ class DirectionRequest private constructor (var command: DirectionRequest.Comman
val wireType = WireFormat.getTagWireType(tag)
when(fieldNumber) {
1 -> {
if (wireType != WireType.VARINT) { errorCode = 1; return false }
if (wireType.id != WireType.VARINT.id) {
errorCode = 1
return false
}
command = DirectionRequest.Command.fromIntToCommand(input.readEnumNoTag())
}
2 -> {
if (wireType != WireType.VARINT) { errorCode = 1; return false }
if (wireType.id != WireType.VARINT.id) {
errorCode = 1
return false
}
sid = input.readInt32NoTag()
}
else -> errorCode = 4
}
return true}
return true
}
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): DirectionRequest.BuilderDirectionRequest {
while(getSizeNoTag() < expectedSize) {
@@ -152,7 +163,7 @@ class DirectionRequest private constructor (var command: DirectionRequest.Comman
fun getSize(fieldNumber: Int): Int {
var size = 0
if (command != DirectionRequest.Command.fromIntToCommand(0)) {
size += WireFormat.getEnumSize(1, command.ord)
size += WireFormat.getEnumSize(1, command.id)
}
if (sid != 0) {
size += WireFormat.getInt32Size(2, sid)
@@ -164,7 +175,7 @@ class DirectionRequest private constructor (var command: DirectionRequest.Comman
fun getSizeNoTag(): Int {
var size = 0
if (command != DirectionRequest.Command.fromIntToCommand(0)) {
size += WireFormat.getEnumSize(1, command.ord)
size += WireFormat.getEnumSize(1, command.id)
}
if (sid != 0) {
size += WireFormat.getInt32Size(2, sid)
@@ -194,6 +205,7 @@ class DirectionResponse private constructor (var code: Int) {
fun mergeWith (other: DirectionResponse) {
code = other.code
this.errorCode = other.errorCode
}
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
@@ -246,7 +258,9 @@ class DirectionResponse private constructor (var code: Int) {
//========== Mutating methods ===========
fun build(): DirectionResponse {
return DirectionResponse(code)
val res = DirectionResponse(code)
res.errorCode = errorCode
return res
}
fun parseFieldFrom(input: CodedInputStream): Boolean {
@@ -257,11 +271,16 @@ class DirectionResponse private constructor (var code: Int) {
val wireType = WireFormat.getTagWireType(tag)
when(fieldNumber) {
1 -> {
if (wireType != WireType.VARINT) { errorCode = 1; return false }
if (wireType.id != WireType.VARINT.id) {
errorCode = 1
return false
}
code = input.readInt32NoTag()
}
else -> errorCode = 4
}
return true}
return true
}
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): DirectionResponse.BuilderDirectionResponse {
while(getSizeNoTag() < expectedSize) {
+53 -15
View File
@@ -67,6 +67,7 @@ class RouteRequest private constructor (var distances: IntArray, var angles: Int
fun mergeWith (other: RouteRequest) {
distances = distances.plus((other.distances))
angles = angles.plus((other.angles))
this.errorCode = other.errorCode
}
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
@@ -85,23 +86,27 @@ class RouteRequest private constructor (var distances: IntArray, var angles: Int
if (distances.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32Size(1, distances[i])
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while(false)
}
if (angles.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32Size(2, angles[i])
arraySize += WireFormat.getInt32SizeNoTag(angles[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while(false)
}
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
@@ -113,23 +118,27 @@ class RouteRequest private constructor (var distances: IntArray, var angles: Int
if (distances.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32Size(1, distances[i])
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while(false)
}
if (angles.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32Size(2, angles[i])
arraySize += WireFormat.getInt32SizeNoTag(angles[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while(false)
}
return size
@@ -220,7 +229,9 @@ class RouteRequest private constructor (var distances: IntArray, var angles: Int
//========== Mutating methods ===========
fun build(): RouteRequest {
return RouteRequest(distances, angles)
val res = RouteRequest(distances, angles)
res.errorCode = errorCode
return res
}
fun parseFieldFrom(input: CodedInputStream): Boolean {
@@ -231,7 +242,10 @@ class RouteRequest private constructor (var distances: IntArray, var angles: Int
val wireType = WireFormat.getTagWireType(tag)
when(fieldNumber) {
1 -> {
if (wireType != WireType.LENGTH_DELIMITED) { errorCode = 1; return false }
if (wireType.id != WireType.LENGTH_DELIMITED.id) {
errorCode = 1
return false
}
val expectedByteSize = input.readInt32NoTag()
var newArray = IntArray(0)
var readSize = 0
@@ -247,7 +261,10 @@ class RouteRequest private constructor (var distances: IntArray, var angles: Int
} while (false)
}
2 -> {
if (wireType != WireType.LENGTH_DELIMITED) { errorCode = 1; return false }
if (wireType.id != WireType.LENGTH_DELIMITED.id) {
errorCode = 1
return false
}
val expectedByteSize = input.readInt32NoTag()
var newArray = IntArray(0)
var readSize = 0
@@ -262,8 +279,10 @@ class RouteRequest private constructor (var distances: IntArray, var angles: Int
angles = newArray
} while (false)
}
else -> errorCode = 4
}
return true}
return true
}
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): RouteRequest.BuilderRouteRequest {
while(getSizeNoTag() < expectedSize) {
@@ -284,23 +303,27 @@ class RouteRequest private constructor (var distances: IntArray, var angles: Int
if (distances.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32Size(1, distances[i])
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while(false)
}
if (angles.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32Size(2, angles[i])
arraySize += WireFormat.getInt32SizeNoTag(angles[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while(false)
}
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
@@ -312,23 +335,27 @@ class RouteRequest private constructor (var distances: IntArray, var angles: Int
if (distances.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32Size(1, distances[i])
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while(false)
}
if (angles.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32Size(2, angles[i])
arraySize += WireFormat.getInt32SizeNoTag(angles[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while(false)
}
return size
@@ -338,6 +365,7 @@ class RouteRequest private constructor (var distances: IntArray, var angles: Int
}
class RouteResponse private constructor (var code: Int) {
//========== Properties ===========
//int32 code = 1
@@ -355,6 +383,7 @@ class RouteResponse private constructor (var code: Int) {
fun mergeWith (other: RouteResponse) {
code = other.code
this.errorCode = other.errorCode
}
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
@@ -407,7 +436,9 @@ class RouteResponse private constructor (var code: Int) {
//========== Mutating methods ===========
fun build(): RouteResponse {
return RouteResponse(code)
val res = RouteResponse(code)
res.errorCode = errorCode
return res
}
fun parseFieldFrom(input: CodedInputStream): Boolean {
@@ -418,11 +449,16 @@ class RouteResponse private constructor (var code: Int) {
val wireType = WireFormat.getTagWireType(tag)
when(fieldNumber) {
1 -> {
if (wireType != WireType.VARINT) { errorCode = 1; return false }
if (wireType.id != WireType.VARINT.id) {
errorCode = 1
return false
}
code = input.readInt32NoTag()
}
else -> errorCode = 4
}
return true}
return true
}
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): RouteResponse.BuilderRouteResponse {
while(getSizeNoTag() < expectedSize) {
@@ -458,3 +494,5 @@ class RouteResponse private constructor (var code: Int) {
}
}
@@ -871,7 +871,7 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va
successExpression = codeBuilder.loadAndGetVariable(successExpression)
}
if (successExpression != null) {
if (successExpression != null && resultVariable.type !is LLVMVoidType && resultVariable.type !is LLVMNullType) {
codeBuilder.storeVariable(resultVariable, successExpression)
}
@@ -1,6 +1,5 @@
package org.kotlinnative.translator
import com.jshmrsn.karg.defaultPrintHelpCallback
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtParameter
@@ -1,10 +1,7 @@
package org.kotlinnative.translator.llvm.types
import org.kotlinnative.translator.exceptions.UnimplementedException
import org.kotlinnative.translator.llvm.LLVMConstant
import org.kotlinnative.translator.llvm.LLVMExpression
import org.kotlinnative.translator.llvm.LLVMSingleValue
import org.kotlinnative.translator.llvm.LLVMVariable
class LLVMCharType() : LLVMType() {
override fun operatorLt(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
@@ -1,10 +1,8 @@
package org.kotlinnative.translator.llvm.types
import org.kotlinnative.translator.exceptions.UnimplementedException
import org.kotlinnative.translator.llvm.LLVMConstant
import org.kotlinnative.translator.llvm.LLVMExpression
import org.kotlinnative.translator.llvm.LLVMSingleValue
import org.kotlinnative.translator.llvm.LLVMVariable
abstract class LLVMType() : Cloneable {
@@ -3,3 +3,4 @@ array_extensions_1_copyOfRange() == 779
array_extensions_1_copyOf_extend() == 340
array_extensions_1_plus_element() == 2933
array_extensions_1_plus_array() == 12132
array_extensions_2_plus_array() == 10
@@ -1,2 +1,2 @@
serialization_test1_Int(1442) == 1442
serialization_test2_Int(10)
serialization_test2_Int(5)
@@ -59,4 +59,15 @@ fun array_extensions_1_plus_array(): Int {
val maximize = array.plus(secondArray)
val ans = maximize[2] + maximize[5] + maximize.size
return ans
}
}
fun array_extensions_2_plus_array(): Int {
var array = IntArray(0)
val nextArray = IntArray(1)
nextArray[0] = 10
array = array.plus(nextArray)
println(array[0])
return array[0]
}
@@ -1,29 +1,29 @@
class DirectionResponse private constructor (var code: Int) {
class DirectionResponse private constructor(var code: Int) {
//========== Properties ===========
//int32 code = 1
var errorCode: Int = 0
//========== Serialization methods ===========
fun writeTo (output: CodedOutputStream) {
fun writeTo(output: CodedOutputStream) {
//int32 code = 1
if (code != 0) {
output.writeInt32 (1, code)
output.writeInt32(1, code)
}
}
fun mergeWith (other: DirectionResponse) {
fun mergeWith(other: DirectionResponse) {
code = other.code
this.errorCode = other.errorCode
}
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
fun mergeFromWithSize(input: CodedInputStream, expectedSize: Int) {
val builder = DirectionResponse.BuilderDirectionResponse(0)
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
}
fun mergeFrom (input: CodedInputStream) {
fun mergeFrom(input: CodedInputStream) {
val builder = DirectionResponse.BuilderDirectionResponse(0)
mergeWith(builder.parseFrom(input).build())
}
@@ -47,7 +47,7 @@ class DirectionResponse private constructor (var code: Int) {
}
//========== Builder ===========
class BuilderDirectionResponse constructor (var code: Int) {
class BuilderDirectionResponse constructor(var code: Int) {
//========== Properties ===========
//int32 code = 1
fun setCode(value: Int): DirectionResponse.BuilderDirectionResponse {
@@ -58,43 +58,57 @@ class DirectionResponse private constructor (var code: Int) {
var errorCode: Int = 0
//========== Serialization methods ===========
fun writeTo (output: CodedOutputStream) {
fun writeTo(output: CodedOutputStream) {
//int32 code = 1
if (code != 0) {
output.writeInt32 (1, code)
output.writeInt32(1, code)
}
}
//========== Mutating methods ===========
fun build(): DirectionResponse {
return DirectionResponse(code)
val res = DirectionResponse(code)
res.errorCode = errorCode
return res
}
fun parseFieldFrom(input: CodedInputStream): Boolean {
if (input.isAtEnd()) { return false }
if (input.isAtEnd()) {
return false
}
val tag = input.readInt32NoTag()
if (tag == 0) { return false }
if (tag == 0) {
return false
}
val fieldNumber = WireFormat.getTagFieldNumber(tag)
val wireType = WireFormat.getTagWireType(tag)
when(fieldNumber) {
when (fieldNumber) {
1 -> {
if (wireType != WireType.VARINT) { errorCode = 1; return false }
if (wireType.id != WireType.VARINT.id) {
errorCode = 1
return false
}
code = input.readInt32NoTag()
}
else -> errorCode = 4
}
return true}
return true
}
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): DirectionResponse.BuilderDirectionResponse {
while(getSizeNoTag() < expectedSize) {
while (getSizeNoTag() < expectedSize) {
parseFieldFrom(input)
}
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
if (getSizeNoTag() > expectedSize) {
errorCode = 2
}
return this
}
fun parseFrom(input: CodedInputStream): DirectionResponse.BuilderDirectionResponse {
while(parseFieldFrom(input)) {}
while (parseFieldFrom(input)) {
}
return this
}
@@ -120,343 +134,382 @@ class DirectionResponse private constructor (var code: Int) {
}
class RouteRequest private constructor (var distances: IntArray, var angles: IntArray) {
//========== Properties ===========
//repeated int32 distances = 1
//repeated int32 angles = 2
var errorCode: Int = 0
//========== Serialization methods ===========
fun writeTo (output: CodedOutputStream) {
//repeated int32 distances = 1
if (distances.size > 0) {
output.writeTag(1, WireType.LENGTH_DELIMITED)
var arrayByteSize = 0
if (distances.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
}
arrayByteSize += arraySize
} while(false)
}
output.writeInt32NoTag(arrayByteSize)
do {
var i = 0
while (i < distances.size) {
output.writeInt32NoTag (distances[i])
i += 1
}
} while(false)
}
//repeated int32 angles = 2
if (angles.size > 0) {
output.writeTag(2, WireType.LENGTH_DELIMITED)
var arrayByteSize = 0
if (angles.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32SizeNoTag(angles[i])
i += 1
}
arrayByteSize += arraySize
} while(false)
}
output.writeInt32NoTag(arrayByteSize)
do {
var i = 0
while (i < angles.size) {
output.writeInt32NoTag (angles[i])
i += 1
}
} while(false)
}
}
fun mergeWith (other: RouteRequest) {
distances = distances.plus((other.distances))
angles = angles.plus((other.angles))
}
fun mergeFromWithSize (input: CodedInputStream, expectedSize: Int) {
val builder = RouteRequest.BuilderRouteRequest(IntArray(0), IntArray(0))
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
}
fun mergeFrom (input: CodedInputStream) {
val builder = RouteRequest.BuilderRouteRequest(IntArray(0), IntArray(0))
mergeWith(builder.parseFrom(input).build())
}
//========== Size-related methods ===========
fun getSize(fieldNumber: Int): Int {
var size = 0
if (distances.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32Size(1, distances[i])
i += 1
}
size += arraySize
} while(false)
}
if (angles.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32Size(2, angles[i])
i += 1
}
size += arraySize
} while(false)
}
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
return size
}
fun getSizeNoTag(): Int {
var size = 0
if (distances.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32Size(1, distances[i])
i += 1
}
size += arraySize
} while(false)
}
if (angles.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32Size(2, angles[i])
i += 1
}
size += arraySize
} while(false)
}
return size
}
//========== Builder ===========
class BuilderRouteRequest constructor (var distances: IntArray, var angles: IntArray) {
class RouteRequest private constructor(var distances: IntArray, var angles: IntArray) {
//========== Properties ===========
//repeated int32 distances = 1
fun setDistances(value: IntArray): RouteRequest.BuilderRouteRequest {
distances = value
return this
}
fun setdistancesByIndex(index: Int, value: Int): RouteRequest.BuilderRouteRequest {
distances[index] = value
return this
}
//repeated int32 angles = 2
fun setAngles(value: IntArray): RouteRequest.BuilderRouteRequest {
angles = value
return this
}
fun setanglesByIndex(index: Int, value: Int): RouteRequest.BuilderRouteRequest {
angles[index] = value
return this
}
var errorCode: Int = 0
//========== Serialization methods ===========
fun writeTo (output: CodedOutputStream) {
//repeated int32 distances = 1
if (distances.size > 0) {
output.writeTag(1, WireType.LENGTH_DELIMITED)
var arrayByteSize = 0
fun writeTo(output: CodedOutputStream) {
//repeated int32 distances = 1
if (distances.size > 0) {
output.writeTag(1, WireType.LENGTH_DELIMITED)
var arrayByteSize = 0
if (distances.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
if (distances.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
}
arrayByteSize += arraySize
} while (false)
}
arrayByteSize += arraySize
} while(false)
output.writeInt32NoTag(arrayByteSize)
do {
var i = 0
while (i < distances.size) {
output.writeInt32NoTag(distances[i])
i += 1
}
} while (false)
}
output.writeInt32NoTag(arrayByteSize)
do {
var i = 0
while (i < distances.size) {
output.writeInt32NoTag (distances[i])
i += 1
}
} while(false)
}
//repeated int32 angles = 2
if (angles.size > 0) {
output.writeTag(2, WireType.LENGTH_DELIMITED)
var arrayByteSize = 0
//repeated int32 angles = 2
if (angles.size > 0) {
output.writeTag(2, WireType.LENGTH_DELIMITED)
var arrayByteSize = 0
if (angles.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32SizeNoTag(angles[i])
i += 1
if (angles.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32SizeNoTag(angles[i])
i += 1
}
arrayByteSize += arraySize
} while (false)
}
arrayByteSize += arraySize
} while(false)
}
output.writeInt32NoTag(arrayByteSize)
output.writeInt32NoTag(arrayByteSize)
do {
var i = 0
while (i < angles.size) {
output.writeInt32NoTag (angles[i])
i += 1
}
} while(false)
}
do {
var i = 0
while (i < angles.size) {
output.writeInt32NoTag(angles[i])
i += 1
}
} while (false)
}
}
//========== Mutating methods ===========
fun build(): RouteRequest {
return RouteRequest(distances, angles)
fun mergeWith(other: RouteRequest) {
distances = distances.plus((other.distances))
angles = angles.plus((other.angles))
this.errorCode = other.errorCode
}
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 != WireType.LENGTH_DELIMITED) { 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.readInt32NoTag()
newArray = newArray.plus(tmp)
readSize += WireFormat.getInt32SizeNoTag(tmp[0])
}
distances = newArray
} while (false)
}
2 -> {
if (wireType != WireType.LENGTH_DELIMITED) { 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.readInt32NoTag()
newArray = newArray.plus(tmp)
readSize += WireFormat.getInt32SizeNoTag(tmp[0])
}
angles = newArray
} while (false)
}
}
return true}
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): RouteRequest.BuilderRouteRequest {
while(getSizeNoTag() < expectedSize) {
parseFieldFrom(input)
}
if (getSizeNoTag() > expectedSize) { errorCode = 2 }
return this
fun mergeFromWithSize(input: CodedInputStream, expectedSize: Int) {
val builder = RouteRequest.BuilderRouteRequest(IntArray(0), IntArray(0))
mergeWith(builder.parseFromWithSize(input, expectedSize).build())
}
fun parseFrom(input: CodedInputStream): RouteRequest.BuilderRouteRequest {
while(parseFieldFrom(input)) {}
return this
fun mergeFrom(input: CodedInputStream) {
val builder = RouteRequest.BuilderRouteRequest(IntArray(0), IntArray(0))
mergeWith(builder.parseFrom(input).build())
}
//========== Size-related methods ===========
fun getSize(fieldNumber: Int): Int {
var size = 0
if (distances.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32Size(1, distances[i])
i += 1
}
size += arraySize
} while(false)
}
if (angles.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32Size(2, angles[i])
i += 1
}
size += arraySize
} while(false)
}
size += WireFormat.getVarint32Size(size) + WireFormat.getTagSize(fieldNumber, WireType.LENGTH_DELIMITED)
return size
var size = 0
if (distances.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while (false)
}
if (angles.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32SizeNoTag(angles[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 (distances.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32Size(1, distances[i])
i += 1
}
size += arraySize
} while(false)
}
if (angles.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32Size(2, angles[i])
i += 1
}
size += arraySize
} while(false)
}
return size
var size = 0
if (distances.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while (false)
}
if (angles.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32SizeNoTag(angles[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while (false)
}
return size
}
}
//========== Builder ===========
class BuilderRouteRequest constructor(var distances: IntArray, var angles: IntArray) {
//========== Properties ===========
//repeated int32 distances = 1
fun setDistances(value: IntArray): RouteRequest.BuilderRouteRequest {
distances = value
return this
}
fun setdistancesByIndex(index: Int, value: Int): RouteRequest.BuilderRouteRequest {
distances[index] = value
return this
}
//repeated int32 angles = 2
fun setAngles(value: IntArray): RouteRequest.BuilderRouteRequest {
angles = value
return this
}
fun setanglesByIndex(index: Int, value: Int): RouteRequest.BuilderRouteRequest {
angles[index] = value
return this
}
var errorCode: Int = 0
//========== Serialization methods ===========
fun writeTo(output: CodedOutputStream) {
//repeated int32 distances = 1
if (distances.size > 0) {
output.writeTag(1, WireType.LENGTH_DELIMITED)
var arrayByteSize = 0
if (distances.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
}
arrayByteSize += arraySize
} while (false)
}
output.writeInt32NoTag(arrayByteSize)
do {
var i = 0
while (i < distances.size) {
output.writeInt32NoTag(distances[i])
i += 1
}
} while (false)
}
//repeated int32 angles = 2
if (angles.size > 0) {
output.writeTag(2, WireType.LENGTH_DELIMITED)
var arrayByteSize = 0
if (angles.size != 0) {
do {
var arraySize = 0
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32SizeNoTag(angles[i])
i += 1
}
arrayByteSize += arraySize
} while (false)
}
output.writeInt32NoTag(arrayByteSize)
do {
var i = 0
while (i < angles.size) {
output.writeInt32NoTag(angles[i])
i += 1
}
} while (false)
}
}
//========== Mutating methods ===========
fun build(): RouteRequest {
val res = RouteRequest(distances, angles)
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.readInt32NoTag()
println(tmp)
println(newArray)
newArray = newArray.plus(tmp)
println(newArray)
readSize += WireFormat.getInt32SizeNoTag(tmp[0])
}
distances = newArray
} while (false)
}
2 -> {
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.readInt32NoTag()
newArray = newArray.plus(tmp)
readSize += WireFormat.getInt32SizeNoTag(tmp[0])
}
angles = newArray
} while (false)
}
else -> errorCode = 4
}
return true
}
fun parseFromWithSize(input: CodedInputStream, expectedSize: Int): RouteRequest.BuilderRouteRequest {
while (getSizeNoTag() < expectedSize) {
parseFieldFrom(input)
}
if (getSizeNoTag() > expectedSize) {
errorCode = 2
}
return this
}
fun parseFrom(input: CodedInputStream): RouteRequest.BuilderRouteRequest {
while (parseFieldFrom(input)) {
}
return this
}
//========== Size-related methods ===========
fun getSize(fieldNumber: Int): Int {
var size = 0
if (distances.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while (false)
}
if (angles.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32SizeNoTag(angles[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 (distances.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(1, WireType.LENGTH_DELIMITED)
var i = 0
while (i < distances.size) {
arraySize += WireFormat.getInt32SizeNoTag(distances[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while (false)
}
if (angles.size != 0) {
do {
var arraySize = 0
size += WireFormat.getTagSize(2, WireType.LENGTH_DELIMITED)
var i = 0
while (i < angles.size) {
arraySize += WireFormat.getInt32SizeNoTag(angles[i])
i += 1
}
size += arraySize
size += WireFormat.getInt32SizeNoTag(arraySize)
} while (false)
}
return size
}
}
}
@@ -483,15 +536,24 @@ fun serialization_test2(size: Int) {
val message = RouteRequest.BuilderRouteRequest(arr, arr).build()
val buffer = ByteArray(message.getSizeNoTag())
i = 0
while (i < buffer.size) {
buffer[i] = 0
i++
}
val outputStream = CodedOutputStream(buffer)
message.writeTo(outputStream)
val inputStream = CodedInputStream(buffer)
val receivedMessage = RouteRequest.BuilderRouteRequest(IntArray(1), IntArray(1)).parseFrom(inputStream).build()
i = 0
while (i < size) {
println(message.distances[i])
println(receivedMessage.distances[i])
assert(message.distances[i] == receivedMessage.distances[i])
i++
}