forked from PlaneteCasio/Casio_asm
49 lines
971 B
C
49 lines
971 B
C
#include "stack.h"
|
|
|
|
//object push and pop
|
|
void Stack_push(stack_t *stack, proc_object_t object) {
|
|
if(stack->top!=256) {
|
|
stack->elements[stack->top]=object;
|
|
stack->top++;
|
|
}
|
|
}
|
|
void Stack_pop(stack_t *stack, proc_object_t *object) {
|
|
if(stack->top) {
|
|
stack->top--;
|
|
*object=stack->elements[stack->top];
|
|
}
|
|
}
|
|
|
|
//integral push and pop
|
|
void Stack_pushInt(stack_t *stack, integral_t object) {
|
|
if(stack->top!=256) {
|
|
stack->elements[stack->top].i=object;
|
|
stack->top++;
|
|
}
|
|
}
|
|
void Stack_popInt(stack_t *stack, integral_t *object) {
|
|
if(stack->top) {
|
|
stack->top--;
|
|
*object=stack->elements[stack->top].i;
|
|
}
|
|
}
|
|
|
|
//decimal push and pop
|
|
void Stack_pushDec(stack_t *stack, decimal_t object) {
|
|
if(stack->top!=256) {
|
|
stack->elements[stack->top].d=object;
|
|
stack->top++;
|
|
}
|
|
}
|
|
void Stack_popDec(stack_t *stack, decimal_t *object) {
|
|
if(stack->top) {
|
|
stack->top--;
|
|
*object=stack->elements[stack->top].d;
|
|
}
|
|
}
|
|
|
|
//init
|
|
void initStack(stack_t *stack) {
|
|
stack->top=0;
|
|
}
|