From 99d37eb1f20e0c7fdcbc4bf42a25b94b33b5f793 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 21 Mar 2026 12:55:54 +0000 Subject: Serialize Patio types to protobuf --- .../compiler/patio/protobuf/PatioToProtobuf.java | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'src/main/java') 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"); + }; + } } -- cgit v1.2.3