home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / prog / c / precg105.lha / source / StringLister.c < prev    next >
C/C++ Source or Header  |  1992-12-24  |  4KB  |  155 lines

  1. /* ==========================================================================
  2. **
  3. **                         StringLister.c
  4. **
  5. ** A StringLister is an object whose primary purpose in life is to
  6. ** manage a list of strings.
  7. **
  8. ** ©1991 WILLISoft
  9. **
  10. ** ==========================================================================
  11. */
  12.  
  13. #include "StringLister.h"
  14. #include "StringListerClass.h"
  15. #include <proto/exec.h>
  16. #include <proto/intuition.h>
  17. #include <proto/graphics.h>
  18. #include "amigamem.h"
  19.  
  20.  
  21. BOOL StringLister_AddString( StringLister *self, char *string, UBYTE qualifier )
  22. {
  23.    StringList *slist;
  24.  
  25.    if (slist = StringList_of(self))
  26.    {
  27.       return StringList_AddString( slist, string, qualifier );
  28.    }
  29.    return FALSE;
  30. }
  31.  
  32. BOOL StringLister_DeleteString( StringLister *self, USHORT i )
  33. {
  34.    StringList *slist;
  35.  
  36.    /*printf("StringLister_DeleteString\n");*/
  37.    if (slist = StringList_of(self))
  38.    {
  39.       return StringList_DeleteString( slist, i );
  40.    }
  41.    return FALSE;
  42. }
  43.  
  44. BOOL StringLister_DeleteAllStrings( StringLister *self )
  45. {
  46.    StringList *slist;
  47.  
  48.    /*printf("StringLister_DeleteString\n");*/
  49.    if (slist = StringList_of(self))
  50.    {
  51.       return StringList_DeleteAllStrings( slist );
  52.    }
  53.    return FALSE;
  54. }
  55.  
  56. void SelectString( StringLister *self, USHORT i, BOOL select )
  57. {
  58.    struct StringListerClass *class;
  59.  
  60.    if (class = (struct StringListerClass*) self->isa)
  61.    {
  62.       if (class->SelectString)
  63.          (*class->SelectString)( self, i, select );
  64.    }
  65. }
  66.  
  67. BOOL StringLister_elaborated = FALSE;
  68.  
  69. struct StringListerClass StringLister_Class;
  70.  
  71. void StringListerClass_Init( struct StringListerClass *class )
  72. {
  73.    InteractorClass_Init( (struct InteractorClass *) class );
  74.    class->isa                 = InteractorClass();
  75.    class->ClassName           = "StringLister";
  76.  
  77.    class->AddString           = StringLister_AddString;
  78.    class->DeleteString        = StringLister_DeleteString;
  79.    class->DeleteAllStrings    = StringLister_DeleteAllStrings;
  80.    class->StringList_of       = NULL;
  81.    class->SelectString        = NULL;
  82. }
  83.  
  84.  
  85. struct StringListerClass *StringListerClass( void )
  86. {
  87.    if (! StringLister_elaborated)
  88.    {
  89.       StringListerClass_Init( &StringLister_Class );
  90.       StringLister_elaborated = TRUE;
  91.    }
  92.  
  93.    return &StringLister_Class;
  94. }
  95.  
  96.  
  97. void StringLister_Init( StringLister *self )
  98. {
  99.    Interactor_Init( self );
  100.    self->isa = StringListerClass();
  101. }
  102.  
  103. BOOL AddString( StringLister *self, char *string, UBYTE qualifier )
  104. {
  105.    struct StringListerClass *class;
  106.  
  107.    if (class= (struct StringListerClass*) self->isa)
  108.    {
  109.       if (class->AddString)
  110.       {
  111.          /*printf("AddString, class=%s, string=%s, qualifier=%d\n",*/
  112.          /*   class->ClassName, string, qualifier );*/
  113.          return (*class->AddString)(self, string, qualifier );
  114.       }
  115.    }
  116.    return FALSE;
  117. }
  118.  
  119. BOOL DeleteString( StringLister *self, USHORT i )
  120. {
  121.    struct StringListerClass *class;
  122.  
  123.    if (class= (struct StringListerClass*) self->isa)
  124.    {
  125.       if (class->DeleteString)
  126.          return (*class->DeleteString)(self, i );
  127.    }
  128.    return FALSE;
  129. }
  130.  
  131. BOOL DeleteAllStrings( StringLister *self )
  132. {
  133.    struct StringListerClass *class;
  134.  
  135.    if (class= (struct StringListerClass*) self->isa)
  136.    {
  137.       if (class->DeleteAllStrings)
  138.          return (*class->DeleteAllStrings)(self);
  139.    }
  140.    return FALSE;
  141. }
  142.  
  143. const StringList *StringList_of( StringLister *self )
  144. {
  145.    struct StringListerClass *class;
  146.  
  147.    if (class= (struct StringListerClass*) self->isa)
  148.    {
  149.       if (class->StringList_of)
  150.          return (*class->StringList_of)(self);
  151.    }
  152.    return NULL;
  153. }
  154.  
  155.