// This file is part of Jiffy released under the MIT license. // See the LICENSE file for more information. #ifndef TERMSTACK_H #define TERMSTACK_H #include "erl_nif.h" #define SMALL_TERMSTACK_SIZE 16 typedef struct { ERL_NIF_TERM *elements; size_t size; size_t top; ERL_NIF_TERM __default_elements[SMALL_TERMSTACK_SIZE]; } TermStack; void termstack_push(TermStack *stack, ERL_NIF_TERM term); ERL_NIF_TERM termstack_pop(TermStack *stack); int termstack_is_empty(TermStack *stack); ERL_NIF_TERM termstack_save(ErlNifEnv *env, TermStack *stack); int termstack_restore(ErlNifEnv *env, ERL_NIF_TERM from, TermStack *stack); void termstack_destroy(TermStack *stack); #endif