stack.cpp

C++ source for Polychorons, 84 lines. Raw file



#include "stack.h"





//---- The stacks used for the different types of data

double stack_double[ STACK_MAXLENGTH ];
int    stack_int   [ STACK_MAXLENGTH ];
void*  stack_ptr   [ STACK_MAXLENGTH ];

int stack_double_pos = 0;
int stack_int_pos    = 0;
int stack_ptr_pos    = 0;





//---- stack_push_double

void stack_push_double( double* the_env_var, double newValue )
{
  stack_double[ stack_double_pos++ ] = *the_env_var;
  *the_env_var = newValue;
}



//---- stack_pop_double

void stack_pop_double( double* the_env_var )
{
  *the_env_var = stack_double[ --stack_double_pos ];
}



//---- stack_push_int

void stack_push_int( int* the_env_var, int newValue )
{
  stack_int[ stack_int_pos++ ] = *the_env_var;
  *the_env_var = newValue;
}



//---- stack_pop_int

void stack_pop_int( int* the_env_var )
{
  *the_env_var = stack_int[ --stack_int_pos ];
}



//---- stack_push_ptr

void stack_push_ptr( void** &the_env_var, void* newValue )
{
  stack_ptr[ stack_ptr_pos++ ] = *the_env_var;
  *the_env_var = newValue;
}



//---- stack_pop_ptr

void stack_pop_ptr( void** the_env_var )
{
  *the_env_var = stack_ptr[ --stack_ptr_pos ];
}