summaryrefslogtreecommitdiff
path: root/upb/port_def.inc
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2018-09-06 13:07:09 -0700
committerJoshua Haberman <jhaberman@gmail.com>2018-09-06 13:07:09 -0700
commit33d1231ead8ffbeb97e6c97b9e9a06ace64abd65 (patch)
treec3e911c436bf729dee15c31e7168e792435c34d1 /upb/port_def.inc
parentf7713ebc391d247617b0dff788a76e5c3383ae94 (diff)
Added port_def.inc and port_undef.inc.
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