#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include "lbm_types.h"
Go to the source code of this file.
|
int | lbm_stack_allocate (lbm_stack_t *s, lbm_uint stack_size) |
|
int | lbm_stack_create (lbm_stack_t *s, lbm_uint *data, lbm_uint size) |
|
void | lbm_stack_free (lbm_stack_t *s) |
|
void | lbm_stack_clear (lbm_stack_t *s) |
|
lbm_uint * | lbm_get_stack_ptr (lbm_stack_t *s, lbm_uint n) |
|
int | lbm_stack_drop (lbm_stack_t *s, lbm_uint n) |
|
lbm_uint * | lbm_stack_reserve (lbm_stack_t *s, lbm_uint n) |
|
int | lbm_push (lbm_stack_t *s, lbm_uint val) |
|
int | lbm_pop (lbm_stack_t *s, lbm_uint *val) |
|
static int | lbm_stack_is_empty (lbm_stack_t *s) |
|
int | lbm_push_2 (lbm_stack_t *s, lbm_uint val0, lbm_uint val1) |
|
int | lbm_pop_2 (lbm_stack_t *s, lbm_uint *r0, lbm_uint *r1) |
|
int | lbm_pop_3 (lbm_stack_t *s, lbm_uint *r0, lbm_uint *r1, lbm_uint *r2) |
|
◆ lbm_get_stack_ptr()
lbm_uint* lbm_get_stack_ptr |
( |
lbm_stack_t * |
s, |
|
|
lbm_uint |
n |
|
) |
| |
Get a pointer to the nth element (from the top) of a stack.
- Parameters
-
- Returns
- Pointer into the stack or NULL.
◆ lbm_pop()
Pop a value from a stack.
- Parameters
-
s | Stack to pop a value from. |
val | Pointer to an lbm_value to store the pop:ed value int. |
- Returns
- 1 on success and 0 on failure (stack is empty).
◆ lbm_pop_2()
int lbm_pop_2 |
( |
lbm_stack_t * |
s, |
|
|
lbm_uint * |
r0, |
|
|
lbm_uint * |
r1 |
|
) |
| |
Pop 2 values from a stack.
- Parameters
-
s | Stack to pop values from. |
r0 | Pointer to lbm_value where the first pop:ed value will be stored. |
r1 | Pointer to lbm_value where the seconds pop:ed value will be stored. |
- Returns
- 1 on success and 0 on failure (stack is empty).
◆ lbm_pop_3()
int lbm_pop_3 |
( |
lbm_stack_t * |
s, |
|
|
lbm_uint * |
r0, |
|
|
lbm_uint * |
r1, |
|
|
lbm_uint * |
r2 |
|
) |
| |
Pop 3 values from a stack.
- Parameters
-
s | Stack to pop values from. |
r0 | |
r1 | |
r2 | |
- Returns
- 1 on success and 0 on failure (stack is empty).
◆ lbm_push()
Push an element onto a stack.
- Parameters
-
s | Stack to push a value onto. |
val | Value to push to the stack. |
- Returns
- 1 on success and 0 on failure (stack is full).
◆ lbm_push_2()
int lbm_push_2 |
( |
lbm_stack_t * |
s, |
|
|
lbm_uint |
val0, |
|
|
lbm_uint |
val1 |
|
) |
| |
Push 2 values to a stack.
- Parameters
-
s | Stack to push values onto. |
val0 | Is pushed first. |
val1 | Is pushed last. |
- Returns
- 1 on success and 0 on failure (stack is full).
◆ lbm_stack_allocate()
int lbm_stack_allocate |
( |
lbm_stack_t * |
s, |
|
|
lbm_uint |
stack_size |
|
) |
| |
Allocate a stack on the symbols and arrays memory. lbm_memory_init must have been run before this function or it will fail.
- Parameters
-
s | Pointer to an lbm_stack_t to initialize. |
stack_size | Size in 32 bit words of stack to allocate. |
- Returns
- 1 on success and 0 on failure.
◆ lbm_stack_clear()
Sets the stack SP to 0.
- Parameters
-
◆ lbm_stack_create()
int lbm_stack_create |
( |
lbm_stack_t * |
s, |
|
|
lbm_uint * |
data, |
|
|
lbm_uint |
size |
|
) |
| |
Create a stack in a statically allocated array.
- Parameters
-
s | Pointer to an lbm_stack_t to initialize. |
data | Pointer to array of 32 bit words to use as the stack storage. |
size | Size in number of 32 bit words. |
- Returns
- 1
◆ lbm_stack_drop()
Drop n elements (from the top) of a stack.
- Parameters
-
s | Stack to drop elements from. |
n | Number of elements to drop. |
- Returns
- 1 on Success and 0 on failure.
◆ lbm_stack_free()
Free a stack allocated on the lispbm_memory.
- Parameters
-
◆ lbm_stack_is_empty()
Check if a stack is empty.
- Parameters
-
- Returns
- 1 if stack is empty otherwise 0.
◆ lbm_stack_reserve()
lbm_uint* lbm_stack_reserve |
( |
lbm_stack_t * |
s, |
|
|
lbm_uint |
n |
|
) |
| |
Reserve place for n elements on the stack and move the stack pointer to the new top.
- Parameters
-
s | Stack to reserve values on |
n | Number of values to reserve |
- Returns
- Pointer into stack position of reserver value 0 or NULL on failure