// // tb_list.h // Tightbeam #ifndef __TIGHTBEAM_LIST_H #define __TIGHTBEAM_LIST_H #include __ptrcheck_abi_assume_single() #include #if !TARGET_RTKIT TB_ASSUME_NONNULL_BEGIN __TB_BEGIN_DECLS typedef void (^tb_list_data_destructor_b)(void *value); typedef struct tb_list_node_s * tb_list_node_t; typedef struct tb_list_s * tb_list_t; TB_EXPORT tb_list_t tb_list_create(void); TB_EXPORT void tb_list_free(tb_list_t list); TB_EXPORT bool tb_list_add(tb_list_t list, uint64_t identifier, void *value, tb_list_data_destructor_b destructor); TB_EXPORT void tb_list_remove(tb_list_t list, uint64_t identifier); TB_EXPORT void * _Nullable tb_list_find(tb_list_t list, uint64_t identifier); TB_EXPORT uint64_t tb_list_count(tb_list_t list); TB_EXPORT void tb_list_clear(tb_list_t list); __TB_END_DECLS TB_ASSUME_NONNULL_END #endif // !TARGET_RTKIT #endif /* __TIGHTBEAM_LIST_H */