diff options
Diffstat (limited to 'utils/testdlist.cc')
-rw-r--r-- | utils/testdlist.cc | 77 |
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"); + } +} |