/* This file is part of ctak. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Takwrap. If not, see . */ #ifndef TT_LLCHT_H #define TT_LLCHT_H #include #include #include // =================================================================== // Types // =================================================================== enum TT_FLAG { TT_EXACT, TT_LOWERBOUND, TT_UPPERBOUND }; typedef struct tt_node_s { uint64_t key; struct tt_node_s *next; enum TT_FLAG flag; uint8_t depth; float value; action_t action; } tt_entry_t; // =================================================================== // Variables // =================================================================== #define TT_LLCHT_SIZE ((uint32_t)((1<<19) - 1)) extern uint32_t tt_num_cached; // =================================================================== // Methods // =================================================================== int tt_init(void); void tt_free(void); tt_entry_t *tt_seek(const uint64_t key); int tt_insert(const uint64_t key, const enum TT_FLAG flag, const uint8_t depth, const float value, const action_t action); #endif