translator: add equals for types
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package org.kotlinnative.translator.llvm.types
|
package org.kotlinnative.translator.llvm.types
|
||||||
|
|
||||||
import org.kotlinnative.translator.llvm.LLVMExpression
|
import org.kotlinnative.translator.llvm.LLVMExpression
|
||||||
|
import org.kotlinnative.translator.llvm.LLVMNode
|
||||||
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
||||||
|
|
||||||
|
|
||||||
@@ -36,6 +37,10 @@ class LLVMBooleanType() : LLVMType() {
|
|||||||
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMBooleanType(), "icmp ne i1 $firstOp, $secondOp")
|
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()) {
|
override fun parseArg(inputArg: String) = when (inputArg.toLowerCase()) {
|
||||||
"true" -> "1"
|
"true" -> "1"
|
||||||
"false" -> "0"
|
"false" -> "0"
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ class LLVMByteType() : LLVMType() {
|
|||||||
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMBooleanType(), "icmp ne i8 $firstOp, $secondOp")
|
LLVMExpression(LLVMBooleanType(), "icmp ne i8 $firstOp, $secondOp")
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
return other is LLVMByteType
|
||||||
|
}
|
||||||
|
|
||||||
override fun mangle() = "Byte"
|
override fun mangle() = "Byte"
|
||||||
|
|
||||||
override val align = 1
|
override val align = 1
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ class LLVMCharType() : LLVMType() {
|
|||||||
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMBooleanType(), "icmp ne i8 $firstOp, $secondOp")
|
LLVMExpression(LLVMBooleanType(), "icmp ne i8 $firstOp, $secondOp")
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
return other is LLVMCharType
|
||||||
|
}
|
||||||
|
|
||||||
override fun mangle() = "Char"
|
override fun mangle() = "Char"
|
||||||
|
|
||||||
override val align = 1
|
override val align = 1
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ class LLVMDoubleType() : LLVMType() {
|
|||||||
override fun operatorPlus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorPlus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMDoubleType(), "fadd double $firstOp, $secondOp")
|
LLVMExpression(LLVMDoubleType(), "fadd double $firstOp, $secondOp")
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
return other is LLVMDoubleType
|
||||||
|
}
|
||||||
|
|
||||||
override fun mangle() = "Double"
|
override fun mangle() = "Double"
|
||||||
|
|
||||||
override val align = 8
|
override val align = 8
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ class LLVMFloatType() : LLVMType() {
|
|||||||
override fun operatorPlus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorPlus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMFloatType(), "fadd float $firstOp, $secondOp")
|
LLVMExpression(LLVMFloatType(), "fadd float $firstOp, $secondOp")
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
return other is LLVMFloatType
|
||||||
|
}
|
||||||
|
|
||||||
override val align = 4
|
override val align = 4
|
||||||
override var size: Int = 4
|
override var size: Int = 4
|
||||||
|
|
||||||
|
|||||||
@@ -62,6 +62,10 @@ class LLVMIntType() : LLVMType() {
|
|||||||
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMBooleanType(), "icmp ne i32 $firstOp, $secondOp")
|
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!!) {
|
override fun convertFrom(source: LLVMSingleValue): LLVMExpression = when (source.type!!) {
|
||||||
is LLVMBooleanType,
|
is LLVMBooleanType,
|
||||||
is LLVMByteType,
|
is LLVMByteType,
|
||||||
|
|||||||
@@ -65,6 +65,10 @@ class LLVMLongType() : LLVMType() {
|
|||||||
else -> throw UnimplementedException()
|
else -> throw UnimplementedException()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
return other is LLVMLongType
|
||||||
|
}
|
||||||
|
|
||||||
override val align = 4
|
override val align = 4
|
||||||
override var size: Int = 8
|
override var size: Int = 8
|
||||||
override val defaultValue = "0"
|
override val defaultValue = "0"
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ class LLVMShortType() : LLVMType() {
|
|||||||
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorNeq(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMBooleanType(), "icmp ne i16 $firstOp, $secondOp")
|
LLVMExpression(LLVMBooleanType(), "icmp ne i16 $firstOp, $secondOp")
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
return other is LLVMShortType
|
||||||
|
}
|
||||||
|
|
||||||
override var size: Int = 2
|
override var size: Int = 2
|
||||||
override val align = 2
|
override val align = 2
|
||||||
override val defaultValue = "0"
|
override val defaultValue = "0"
|
||||||
|
|||||||
Reference in New Issue
Block a user