summaryrefslogtreecommitdiff
path: root/utils/testlist.cc
diff options
context:
space:
mode:
Diffstat (limited to 'utils/testlist.cc')
-rw-r--r--utils/testlist.cc76
1 files changed, 76 insertions, 0 deletions
diff --git a/utils/testlist.cc b/utils/testlist.cc
new file mode 100644
index 0000000..076d88e
--- /dev/null
+++ b/utils/testlist.cc
@@ -0,0 +1,76 @@
+#include <stdio.h>
+#include "String.h"
+#include "List.h"
+
+main ()
+{
+#ifdef CPLUS_BUG19
+ CcuList l;
+#else
+ CcuListOf <char> l;
+#endif
+ char c;
+ char s[80];
+ while ((c = getchar ()) != EOF) {
+ switch (c) {
+ case 'a':
+ scanf (" %s", s);
+ l.Append (NewString (s));
+ break;
+ case 'p':
+ scanf (" %s", s);
+ l.Prepend (NewString (s));
+ break;
+ case '+':
+ l.RemoveFirst ();
+ break;
+ case '-':
+ l.RemoveLast ();
+ break;
+ case '\n':
+ continue;
+ case 'i':
+ {
+ int i;
+ scanf (" %d %s", &i, s);
+#ifdef CPLUS_BUG19
+ CcuListIter lj (l);
+#else
+ CcuListIterOf <char> lj (l);
+#endif
+ while ((i-- > 0) && ++lj)
+ ;
+ l.InsertBefore (lj, NewString (s));
+ break;
+ }
+ case 'j':
+ {
+ int i;
+ scanf (" %d %s", &i, s);
+#ifdef CPLUS_BUG19
+ CcuListIter lj (l);
+#else
+ CcuListIterOf <char> lj (l);
+#endif
+ while ((i-- > 0) && ++lj)
+ ;
+ l.InsertAfter (lj, NewString (s));
+ break;
+ }
+ }
+#ifdef CPLUS_BUG19
+ CcuListIter li (l);
+ while (++li) {
+ char* pt = (char*) *li;
+ printf ("%s ", pt);
+ }
+#else
+ CcuListIterOf <char> li (l);
+ while (++li) {
+ char* pt = *li;
+ printf ("%s ", pt);
+ }
+#endif
+ printf ("\n");
+ }
+}