summaryrefslogtreecommitdiff
path: root/upb
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
parentf7713ebc391d247617b0dff788a76e5c3383ae94 (diff)
Added port_def.inc and port_undef.inc.
Diffstat (limited to 'upb')
-rw-r--r--upb/port_def.inc18
-rw-r--r--upb/port_undef.inc5
2 files changed, 23 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;
diff --git a/upb/port_undef.inc b/upb/port_undef.inc
new file mode 100644
index 0000000..7db97ca
--- /dev/null
+++ b/upb/port_undef.inc
@@ -0,0 +1,5 @@
+
+#undef UPB_SIZE
+#undef UPB_FIELD_AT
+#undef UPB_READ_ONEOF
+#undef UPB_WRITE_ONEOF
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback