#include #include #include #ifndef TT_TREAP_H #define TT_TREAP_H // =================================================================== // Types // =================================================================== enum TT_FLAG { TT_EXACT, TT_LOWERBOUND, TT_UPPERBOUND }; typedef struct treap_node_s { uint64_t key; uint32_t weight; struct treap_node_s *left, *right, *parent; enum TT_FLAG flag; uint8_t depth; float value; } tt_entry_t; // =================================================================== // Globals // =================================================================== extern uint32_t tt_num_cached; // =================================================================== // Methods // =================================================================== int tt_init(void); void tt_free(void); tt_entry_t *tt_seek(uint64_t key); int tt_insert(const uint64_t key, const enum TT_FLAG flag, const uint8_t depth, const float value); #endif