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 */