diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-16 22:01:18 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-16 22:01:18 +0000 |
| commit | d76118bdc14ba8d6ad69a788d24ca194a0c700bd (patch) | |
| tree | 381370a4df60bd61f05903138956d409390509e7 /src/main/java | |
| parent | b5556d06e74b5c3245c092b2b81e0e0df8856c5d (diff) | |
Add PatioDataValueBool
Diffstat (limited to 'src/main/java')
6 files changed, 25 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java index da9c0c37..7fdad03e 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java @@ -1181,6 +1181,9 @@ public class LlvmPatioCodeGen { yield new LlvmOperandArray(llvmType, llvmElements); } + case PatioDataValueBool patioDataValueByte -> + new LlvmOperandInt(patioDataValueByte.value() ? 1 : 0); + case PatioDataValueByte patioDataValueByte -> new LlvmOperandInt(patioDataValueByte.value()); diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java index d53a4044..a0d69f70 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java @@ -606,6 +606,9 @@ public class WasmPatioCodeGen { patioDataValueToBytes(element, bytes); } } + case PatioDataValueBool patioDataValueBool -> { + bytes.put(patioDataValueBool.value() ? (byte) 1 : (byte) 0); + } case PatioDataValueByte patioDataValueByte -> { bytes.put(patioDataValueByte.value()); } diff --git a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java index 3e4fb96a..05703e24 100644 --- a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java +++ b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java @@ -509,6 +509,12 @@ public class PatioSerializer { ) ); + case PatioDataValueBool bool -> + treeList( + treeIdentifier("bool"), + treeIdentifier(bool.value() ? "true" : "false") + ); + case PatioDataValueByte byte_ -> treeList( treeIdentifier("byte"), diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java index b55dc07b..1181353e 100644 --- a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java +++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java @@ -1,5 +1,5 @@ package org.shedlang.compiler.patio.ast.types; -public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueByte, PatioDataValueInt, PatioDataValueStruct { +public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueBool, PatioDataValueByte, PatioDataValueInt, PatioDataValueStruct { PatioDataLayout layout(); } diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValueBool.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValueBool.java new file mode 100644 index 00000000..57ca6851 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValueBool.java @@ -0,0 +1,8 @@ +package org.shedlang.compiler.patio.ast.types; + +public record PatioDataValueBool(boolean value) implements PatioDataValue { + @Override + public PatioDataLayout layout() { + return PatioDataLayouts.BOOL; + } +} diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java index fa158b6b..c7b1a1d3 100644 --- a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java +++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java @@ -12,6 +12,10 @@ public class PatioDataValues { return new PatioDataValueArray(elementLayout, elements); } + public static PatioDataValue bool(boolean value) { + return new PatioDataValueBool(value); + } + public static PatioDataValue byte_(int value) { return new PatioDataValueByte((byte) value); } |
