Casio_asm/interpreter/stack.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;
}