home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / OTL-MC7.DMS / in.adf / classsource.lha / ClassSource / DataStructures / StringArray / stringarray.c
Encoding:
C/C++ Source or Header  |  1995-02-12  |  1.2 KB  |  77 lines

  1. #include <classes/DataStructures/Stringarray.h>
  2.  
  3. #include <stdarg.h>
  4.  
  5. stringarray::stringarray(STRPTR string1, ...)
  6.     : strs(4)
  7. {
  8.     if (string1)
  9.     {
  10.         va_list v;
  11.         va_start(v,string1);
  12.         addTail(string1);
  13.         STRPTR s;
  14.         while (s = va_arg(v,STRPTR))
  15.             addTail(s);
  16.         va_end(v);
  17.     };
  18. }
  19.  
  20. stringarray::stringarray(STRPTR *strings)
  21.     : strs(4)
  22. {
  23.     if (strings)
  24.     {
  25.         while (*strings)
  26.             addTail(*(strings++))
  27.     };
  28. }
  29.  
  30. ULONG stringarray::length() const
  31. {
  32.     return strs.length();
  33. }
  34.  
  35. STRPTR *stringarray::strings()
  36. {
  37.     (STRPTR &) strs.operator[](strs.length()) = NULL;
  38.     return (STRPTR *) &strs.operator[](0);
  39. }
  40.  
  41. STRPTR &stringarray::operator [](ULONG index)
  42. {
  43.     return (STRPTR &) strs.operator[] (index);
  44. }
  45.  
  46. VOID stringarray::addTail(STRPTR str)
  47. {
  48.     (STRPTR &) strs.addTail() = str;
  49. }
  50.  
  51. VOID stringarray::insert(STRPTR str, ULONG index)
  52. {
  53.     (STRPTR &) strs.insert(index) = str;
  54. }
  55.  
  56. VOID stringarray::remTail()
  57. {
  58.     strs.remTail();
  59. }
  60.  
  61. VOID stringarray::remove(ULONG index)
  62. {
  63.     strs.remove(index);
  64. }
  65.  
  66. // *************************************************************
  67.  
  68. stringarraycursor::stringarraycursor(stringarray &s)
  69.     : gen_arraycursor(s.strs)
  70. {
  71. }
  72.  
  73. STRPTR stringarraycursor::item()
  74. {
  75.     return (STRPTR) ((STRPTR &) gen_arraycursor::item());
  76. }
  77.