// -*- Mode: Eagle -*-
/*
* A stack.
*
*/

string m_ary[];
char FIELD_SEP = '\t';
char RECORD_SEP = '\n';

string push(string stack, string entry)
{
  return stack + entry + RECORD_SEP;
}

string top(string stack)
{
  int num = strsplit(m_ary, stack, RECORD_SEP);
  return m_ary[num - 1];
}

string pop(string stack)
{
  string str;
  int num = strsplit(m_ary, stack, RECORD_SEP);
  m_ary[num - 1] = "";
  str = strjoin(m_ary, RECORD_SEP);
  int off = strrchr(str, RECORD_SEP);
  return strsub(str, off - 1);
}

string bottom(string stack)
{
  return "";
}

string shift(string stack)
{
  return "";
}

string unshift(string stack, string entry)
{
  return "";
}

string t;
t = push(t, "aaa");
t = push(t, "bbb");
t = push(t, "ccc");


string msg;
string qqq;
sprintf(msg, "stack:\n%s", t);
qqq = qqq + msg;
string s;
s = top(t);
sprintf(msg, "top:\n%s", s);
qqq = qqq + msg;
t = pop(t);
s = top(t);
sprintf(msg, "top:\n%s", s);
qqq = qqq + msg;

t = push(t, "ddd");

sprintf(msg, "stack:\n%s", t);
qqq = qqq + msg;

dlgMessageBox(qqq);
