blob: 969f24029abaa8cd2e5f7906d8429a43d4c6578d [file] [log] [blame]
Matthias Andreas Benkard261532a2021-12-12 20:09:27 +01001package eu.mulk.jgvariant.core;
2
3import java.util.List;
4import java.util.Optional;
5
6/** A value representable by the GVariant serialization format. */
7public sealed interface Value {
8
9 // Composite types
10 record Array<T extends Value>(List<T> values) implements Value {}
11
12 record Maybe<T extends Value>(Optional<T> value) implements Value {}
13
14 record Structure<T extends Record>(T values) implements Value {}
15
16 record Variant(Class<? extends Value> type, Value value) implements Value {}
17
18 // Primitive types
19 record Bool(boolean value) implements Value {
20 static Bool TRUE = new Bool(true);
21 static Bool FALSE = new Bool(false);
22 }
23
24 record Int8(byte value) implements Value {}
25
26 record Int16(short value) implements Value {}
27
28 record Int32(int value) implements Value {}
29
30 record Int64(long value) implements Value {}
31
32 record Float64(double value) implements Value {}
33
34 record Str(String value) implements Value {}
35}