aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-21 12:55:54 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-21 12:55:54 +0000
commit99d37eb1f20e0c7fdcbc4bf42a25b94b33b5f793 (patch)
tree45333eda23d4dc7ff7791d053e8298254c1a9636 /src/main/java
parent09ae7b92f3775a260451798aefb7ff7fc719fbd9 (diff)
Serialize Patio types to protobuf
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java b/src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java
index 454007a8..0f3ffcc0 100644
--- a/src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java
+++ b/src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java
@@ -422,4 +422,61 @@ public class PatioToProtobuf {
throw new UnsupportedOperationException("TODO");
};
}
+
+ public static PatioProtobuf.PatioType serializeType(PatioType type) {
+ var builder = PatioProtobuf.PatioType.newBuilder();
+
+ switch (type) {
+ case PatioBoolType patioBoolType ->
+ builder.getBoolBuilder();
+
+ case PatioByteType patioByteType ->
+ builder.getByteBuilder();
+
+ case PatioDataPtrType patioDataPtrType ->
+ builder.getDataPtrBuilder();
+
+ case PatioFunctionPtrType patioFunctionPtrType ->
+ builder.getFunctionPtrBuilder();
+
+ case PatioInt32Type patioInt32Type ->
+ builder.getInt32Builder();
+
+ case PatioIntType patioIntType ->
+ builder.getIntBuilder();
+
+ case PatioVoidType patioVoidType ->
+ builder.getVoidBuilder();
+ }
+
+ return builder.build();
+ }
+
+ public static PatioType deserializeType(PatioProtobuf.PatioType type) {
+ return switch (type.getValueCase()) {
+ case BOOL ->
+ PatioTypes.BOOL;
+
+ case BYTE ->
+ PatioTypes.BYTE;
+
+ case DATA_PTR ->
+ PatioTypes.DATA_PTR;
+
+ case FUNCTION_PTR ->
+ PatioTypes.FUNCTION_PTR;
+
+ case INT ->
+ PatioTypes.INT;
+
+ case INT32 ->
+ PatioTypes.INT32;
+
+ case VOID ->
+ PatioTypes.VOID;
+
+ case VALUE_NOT_SET ->
+ throw new UnsupportedOperationException("TODO");
+ };
+ }
}