Mercurial > ~dholland > hg > ag > index.cgi
diff anagram/support/agcstack.h @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/anagram/support/agcstack.h Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,59 @@ +/* + * AnaGram, A System for Syntax Directed Programming + * Copyright 1997-2002 Parsifal Software. All Rights Reserved. + * See the file COPYING for license and usage terms. + * + * agcstack.h - character stack + */ + +#ifndef AGCSTACK_H +#define AGCSTACK_H + +#include "agstack.h" +#include "agstring.h" + + +class AgCharStack : public AgStack<char> { +public: + AgCharStack() + : AgStack<char>() + {} + AgCharStack(const int c) + : AgStack<char>((char) c) + {} + AgCharStack(const AgCharStack &s) + : AgStack<char>(s) + {} + AgCharStack &push(const char *s); + AgCharStack &push(const unsigned char *s) { + return push((const char *) s); + } + AgCharStack &push(const char *s, unsigned n); + AgCharStack &push(const unsigned char *s, unsigned n) { + return push((const char *)s, n); + } + + AgCharStack &operator << (AgString s); + AgCharStack &operator << (const char *s); + + AgCharStack &operator << (int c) { + push((char) c); + return *this; + } + + AgCharStack &push(const AgString &s) { + (*this) << s; + return *this; + } + + AgCharStack &push(const int c) { + AgStack<char>::push((char) c); + return *this; + } + + AgString popString(unsigned n); + AgString popString(); +}; + + +#endif /* AGCSTACK_H */