diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-03-21 12:55:54 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-03-21 12:55:54 +0000 |
| commit | 99d37eb1f20e0c7fdcbc4bf42a25b94b33b5f793 (patch) | |
| tree | 45333eda23d4dc7ff7791d053e8298254c1a9636 /src/main/java | |
| parent | 09ae7b92f3775a260451798aefb7ff7fc719fbd9 (diff) | |
Serialize Patio types to protobuf
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java | 57 |
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"); + }; + } } |
