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