translator: add equals for types
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user