|
|
- // 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
|