translator: add equals for types

This commit is contained in:
Alexey Stepanov
2016-08-10 12:23:27 +03:00
parent 74447d59bc
commit d54c4c2da1
8 changed files with 33 additions and 0 deletions
@@ -1,6 +1,7 @@
package org.kotlinnative.translator.llvm.types
import org.kotlinnative.translator.llvm.LLVMExpression
import org.kotlinnative.translator.llvm.LLVMNode
import org.kotlinnative.translator.llvm.LLVMSingleValue
@@ -36,6 +37,10 @@ class LLVMBooleanType() : LLVMType() {
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
LLVMExpression(LLVMBooleanType(), "icmp ne i1 $firstOp, $secondOp")
override fun equals(other: Any?): Boolean {
return other is LLVMBooleanType
}
override fun parseArg(inputArg: String) = when (inputArg.toLowerCase()) {
"true" -> "1"
"false" -> "0"
@@ -22,6 +22,10 @@ class LLVMByteType() : LLVMType() {
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
LLVMExpression(LLVMBooleanType(), "icmp ne i8 $firstOp, $secondOp")
override fun equals(other: Any?): Boolean {
return other is LLVMByteType
}
override fun mangle() = "Byte"
override val align = 1
@@ -22,6 +22,10 @@ class LLVMCharType() : LLVMType() {
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
LLVMExpression(LLVMBooleanType(), "icmp ne i8 $firstOp, $secondOp")
override fun equals(other: Any?): Boolean {
return other is LLVMCharType
}
override fun mangle() = "Char"
override val align = 1
@@ -18,6 +18,10 @@ class LLVMDoubleType() : LLVMType() {
override fun operatorPlus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
LLVMExpression(LLVMDoubleType(), "fadd double $firstOp, $secondOp")
override fun equals(other: Any?): Boolean {
return other is LLVMDoubleType
}
override fun mangle() = "Double"
override val align = 8
@@ -18,6 +18,10 @@ class LLVMFloatType() : LLVMType() {
override fun operatorPlus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
LLVMExpression(LLVMFloatType(), "fadd float $firstOp, $secondOp")
override fun equals(other: Any?): Boolean {
return other is LLVMFloatType
}
override val align = 4
override var size: Int = 4
@@ -62,6 +62,10 @@ class LLVMIntType() : LLVMType() {
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
LLVMExpression(LLVMBooleanType(), "icmp ne i32 $firstOp, $secondOp")
override fun equals(other: Any?): Boolean {
return other is LLVMIntType
}
override fun convertFrom(source: LLVMSingleValue): LLVMExpression = when (source.type!!) {
is LLVMBooleanType,
is LLVMByteType,
@@ -65,6 +65,10 @@ class LLVMLongType() : LLVMType() {
else -> throw UnimplementedException()
}
override fun equals(other: Any?): Boolean {
return other is LLVMLongType
}
override val align = 4
override var size: Int = 8
override val defaultValue = "0"
@@ -22,6 +22,10 @@ class LLVMShortType() : LLVMType() {
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
LLVMExpression(LLVMBooleanType(), "icmp ne i16 $firstOp, $secondOp")
override fun equals(other: Any?): Boolean {
return other is LLVMShortType
}
override var size: Int = 2
override val align = 2
override val defaultValue = "0"