summaryrefslogtreecommitdiff
path: root/utils/testdlist.cc
diff options
context:
space:
mode:
Diffstat (limited to 'utils/testdlist.cc')
-rw-r--r--utils/testdlist.cc77
1 files changed, 77 insertions, 0 deletions
diff --git a/utils/testdlist.cc b/utils/testdlist.cc
new file mode 100644
index 0000000..9656883
--- /dev/null
+++ b/utils/testdlist.cc
@@ -0,0 +1,77 @@
+#include <stdio.h>
+#include "String.h"
+#include "DList.h"
+
+main ()
+{
+#ifdef CPLUS_BUG19
+ CcuDList l;
+#else
+ CcuDListOf <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 'r':
+ {
+ CcuDListIterOf <char> li (l);
+ li.GotoEnd ();
+ while (--li) {
+ char* pt = *li;
+ printf ("%s ", pt);
+ }
+ printf ("\n");
+ continue;
+ }
+ case 'i':
+ {
+ int i;
+ scanf (" %d %s", &i, s);
+ CcuDListIterOf <char> lj (l);
+ while ((i-- > 0) && ++lj)
+ ;
+ l.InsertBefore (lj, NewString (s));
+ break;
+ }
+ case 'j':
+ {
+ int i;
+ scanf (" %d %s", &i, s);
+ CcuDListIterOf <char> lj (l);
+ while ((i-- > 0) && ++lj)
+ ;
+ l.InsertAfter (lj, NewString (s));
+ break;
+ }
+ }
+#ifdef CPLUS_BUG19
+ CcuDListIter li (l);
+ while (++li)
+ printf ("%s ", (char*) *li);
+#else
+ CcuDListIterOf <char> li (l);
+ while (++li) {
+ char* pt = *li;
+ printf ("%s ", pt);
+ }
+#endif
+ printf ("\n");
+ }
+}