summaryrefslogtreecommitdiff
path: root/upb/port_def.inc
diff options
context:
space:
mode:
Diffstat (limited to 'upb/port_def.inc')
-rw-r--r--upb/port_def.inc18
1 files changed, 18 insertions, 0 deletions
diff --git a/upb/port_def.inc b/upb/port_def.inc
new file mode 100644
index 0000000..33ff78c
--- /dev/null
+++ b/upb/port_def.inc
@@ -0,0 +1,18 @@
+
+#if UINTPTR_MAX == 0xffffffff
+#define UPB_SIZE(size32, size64) size32
+#else
+#define UPB_SIZE(size32, size64) size64
+#endif
+
+#define UPB_FIELD_AT(msg, fieldtype, offset) \
+ *(fieldtype*)((const char*)(msg) + offset)
+
+#define UPB_READ_ONEOF(msg, fieldtype, offset, case_offset, case_val, default) \
+ UPB_FIELD_AT(msg, int, case_offset) == case_val \
+ ? UPB_FIELD_AT(msg, fieldtype, offset) \
+ : default
+
+#define UPB_WRITE_ONEOF(msg, fieldtype, offset, value, case_offset, case_val) \
+ UPB_FIELD_AT(msg, int, case_offset) = case_val; \
+ UPB_FIELD_AT(msg, fieldtype, offset) = value;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback