// 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; 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); void termstack_push(TermStack* stack, ERL_NIF_TERM term); ERL_NIF_TERM termstack_pop(TermStack* stack); int termstack_is_empty(TermStack* stack); #endif