squat-uidlist.h revision 1caf757864e7734345660e7d190f84e42668a6f8
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen uidlist file:
4ead43ecc06d10047998966c4dc0b142ecce4b66Timo Sirainen struct uidlist_header;
1d4f710106fb498750456724628da6063e012e6dTimo Sirainen // size includes both prev_offset and uidlist
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen packed (size << 2) | packed_flags; // UIDLIST_PACKED_FLAG_*
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen [packed prev_offset;] // If UIDLIST_PACKED_FLAG_BEGINS_WITH_OFFSET is set
6fdfa4d4cf14d1d7764d7faa8258f112e39c8dbeTimo Sirainen if (UIDLIST_PACKED_FLAG_BITMASK) {
ab0d9eecd85f74acae18fe88529302e0776cc500Timo Sirainen packed base_uid; // first UID in uidlist
ad004e44be109684521494b5af2ad1da39b8bb27Timo Sirainen uint8_t bitmask[]; // first bit is base_uid+1
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen // FIXME: packed range
ad004e44be109684521494b5af2ad1da39b8bb27Timo Sirainenstruct squat_uidlist *squat_uidlist_init(struct squat_trie *trie);
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenvoid squat_uidlist_deinit(struct squat_uidlist *uidlist);
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenint squat_uidlist_refresh(struct squat_uidlist *uidlist);
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenint squat_uidlist_build_init(struct squat_uidlist *uidlist,
f059a046515f4b2b15a6c2a10a6f12f6166e39a5Timo Sirainenuint32_t squat_uidlist_build_add_uid(struct squat_uidlist_build_context *ctx,
f059a046515f4b2b15a6c2a10a6f12f6166e39a5Timo Sirainenvoid squat_uidlist_build_flush(struct squat_uidlist_build_context *ctx);
f059a046515f4b2b15a6c2a10a6f12f6166e39a5Timo Sirainenint squat_uidlist_build_finish(struct squat_uidlist_build_context *ctx);
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenvoid squat_uidlist_build_deinit(struct squat_uidlist_build_context **ctx);
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenint squat_uidlist_rebuild_init(struct squat_uidlist_build_context *build_ctx,
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen struct squat_uidlist_rebuild_context **ctx_r);
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenuint32_t squat_uidlist_rebuild_next(struct squat_uidlist_rebuild_context *ctx,
46ec792dd4ccf6c34706c4774228301fafde6aa9Timo Sirainenuint32_t squat_uidlist_rebuild_nextu(struct squat_uidlist_rebuild_context *ctx,
46ec792dd4ccf6c34706c4774228301fafde6aa9Timo Sirainenint squat_uidlist_rebuild_finish(struct squat_uidlist_rebuild_context *ctx,
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenint squat_uidlist_get(struct squat_uidlist *uidlist, uint32_t uid_list_idx,
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenuint32_t squat_uidlist_singleton_last_uid(uint32_t uid_list_idx);
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenint squat_uidlist_get_seqrange(struct squat_uidlist *uidlist,
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenint squat_uidlist_filter(struct squat_uidlist *uidlist, uint32_t uid_list_idx,
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenvoid squat_uidlist_delete(struct squat_uidlist *uidlist);
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainensize_t squat_uidlist_mem_used(struct squat_uidlist *uidlist,
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen unsigned int *count_r);