- (((OFS) % 4 == 0 && !(MF.map & (UINT64_MAX << (OFS) / 4))) \
- || ((OFS) % 4 == 2 && MF.map & (UINT64_C(1) << (OFS) / 4) \
- && !(MF.map & (UINT64_MAX << ((OFS) / 4 + 1)))))); \
+ (((OFS) % 8 == 0 && !(MF.map & (UINT64_MAX << (OFS) / 8))) \
+ || ((OFS) % 8 == 4 && MF.map & (UINT64_C(1) << (OFS) / 8) \
+ && !(MF.map & (UINT64_MAX << ((OFS) / 8 + 1)))))); \
+ \
+ if ((OFS) % 8 == 0) { \
+ *(uint32_t *)MF.data = VALUE; \
+ MF.map |= UINT64_C(1) << (OFS) / 8; \
+ } else if ((OFS) % 8 == 4) { \
+ *((uint32_t *)MF.data + 1) = VALUE; \
+ MF.data++; \
+ } \
+}
+
+#define miniflow_push_be32_(MF, OFS, VALUE) \
+ miniflow_push_uint32_(MF, OFS, (OVS_FORCE uint32_t)(VALUE))
+
+#define miniflow_push_uint16_(MF, OFS, VALUE) \
+{ \
+ MINIFLOW_ASSERT(MF.data < MF.end && \
+ (((OFS) % 8 == 0 && !(MF.map & (UINT64_MAX << (OFS) / 8))) \
+ || ((OFS) % 2 == 0 && MF.map & (UINT64_C(1) << (OFS) / 8) \
+ && !(MF.map & (UINT64_MAX << ((OFS) / 8 + 1)))))); \