static size_t assemble_id_index_value(DocInfo *docinfo, char *dst) { char* const start = dst; raw_id_index_value *raw = (raw_id_index_value*)dst; raw->db_seq = encode_raw48(docinfo->db_seq); raw->size = encode_raw32((uint32_t)docinfo->size); raw->bp = encode_raw48(docinfo->bp | (docinfo->deleted ? 1LL<<47 : 0)); raw->content_meta = encode_raw08(docinfo->content_meta); raw->rev_seq = encode_raw48(docinfo->rev_seq); dst += sizeof(*raw); memcpy(dst, docinfo->rev_meta.buf, docinfo->rev_meta.size); dst += docinfo->rev_meta.size; return dst - start; }
static void test_raw_32(uint32_t value) { raw_32 raw; raw = encode_raw32(value); assert(decode_raw32(raw) == value); }