67 lines
978 B
C
67 lines
978 B
C
// -*- Mode: Eagle -*-
|
|
//
|
|
// Routines to implement a stack made from a string array.
|
|
//
|
|
|
|
//
|
|
// Constants
|
|
//
|
|
int END_OF_STACK = -1;
|
|
|
|
//
|
|
// Global variables
|
|
//
|
|
string g_stack[];
|
|
int g_stack_ndx = 0;
|
|
int g_fwd_iter = 0;
|
|
int g_rev_iter = 0;
|
|
|
|
//
|
|
// Module variables
|
|
//
|
|
|
|
//
|
|
// Functions
|
|
//
|
|
void stack_init() {
|
|
g_stack_ndx = 0;
|
|
}
|
|
|
|
string stack_pop() {
|
|
if (g_stack_ndx > 0) {
|
|
return g_stack[--g_stack_ndx];
|
|
}
|
|
return "EMPTY-STACK";
|
|
}
|
|
|
|
void stack_push(string astring) {
|
|
g_stack[g_stack_ndx++] = astring;
|
|
}
|
|
|
|
string stack_elem(int n) {
|
|
return g_stack[n];
|
|
}
|
|
|
|
int stack_count() {
|
|
return g_stack_ndx;
|
|
}
|
|
|
|
void stack_sort() {
|
|
sort(stack_count(), g_stack);
|
|
}
|
|
|
|
int stack_fwd_iter() {
|
|
g_fwd_iter = 0;
|
|
return g_fwd_iter;
|
|
}
|
|
|
|
int stack_fwd_next() {
|
|
if (g_fwd_iter == END_OF_STACK)
|
|
return END_OF_STACK;
|
|
if (g_fwd_iter < (g_stack_ndx - 1)) {
|
|
return ++g_fwd_iter;
|
|
}
|
|
g_fwd_iter = END_OF_STACK;
|
|
return END_OF_STACK;
|
|
}
|