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