do { \
size_t NEW_CAPACITY = OLD_CAPACITY ? 2 * OLD_CAPACITY : 2; \
size_t OLD_BYTES = OLD_CAPACITY *
sizeof *
BEGIN_FIFO (F); \
size_t NEW_BYTES = NEW_CAPACITY *
sizeof *
BEGIN_FIFO (F); \
START_FIFO (F) = \
ALLOCATED_FIFO (F) =
START_FIFO (F) + NEW_CAPACITY; \
LIMIT_FIFO (F) =
START_FIFO (F) + NEW_CAPACITY / 2; \
BEGIN_FIFO (F) =
START_FIFO (F) + OLD_BEGIN_OFFSET; \
} while (0)
void * kissat_realloc(kissat *solver, void *p, size_t old_bytes, size_t new_bytes)
35#define ENLARGE_FIFO(T, F) \
36 do { \
37 size_t OLD_BEGIN_OFFSET = BEGIN_FIFO (F) - START_FIFO (F); \
38 size_t OLD_END_OFFSET = END_FIFO (F) - START_FIFO (F); \
39 size_t OLD_CAPACITY = CAPACITY_FIFO (F); \
40 size_t NEW_CAPACITY = OLD_CAPACITY ? 2 * OLD_CAPACITY : 2; \
41 size_t OLD_BYTES = OLD_CAPACITY * sizeof *BEGIN_FIFO (F); \
42 size_t NEW_BYTES = NEW_CAPACITY * sizeof *BEGIN_FIFO (F); \
43 START_FIFO (F) = \
44 (T*) kissat_realloc (solver, START_FIFO (F), OLD_BYTES, NEW_BYTES); \
45 ALLOCATED_FIFO (F) = START_FIFO (F) + NEW_CAPACITY; \
46 LIMIT_FIFO (F) = START_FIFO (F) + NEW_CAPACITY / 2; \
47 BEGIN_FIFO (F) = START_FIFO (F) + OLD_BEGIN_OFFSET; \
48 END_FIFO (F) = START_FIFO (F) + OLD_END_OFFSET; \
49 KISSAT_assert (BEGIN_FIFO (F) < LIMIT_FIFO (F)); \
50 } while (0)