home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / qt3_emx.zip / include / qstrlist.h < prev    next >
C/C++ Source or Header  |  2001-10-11  |  3KB  |  113 lines

  1. /****************************************************************************
  2. ** $Id$
  3. **
  4. ** Definition of QStrList, QStrIList and QStrListIterator classes
  5. **
  6. ** Created : 920730
  7. **
  8. ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
  9. **
  10. ** This file is part of the tools module of the Qt GUI Toolkit.
  11. **
  12. ** This file may be distributed under the terms of the Q Public License
  13. ** as defined by Trolltech AS of Norway and appearing in the file
  14. ** LICENSE.QPL included in the packaging of this file.
  15. **
  16. ** This file may be distributed and/or modified under the terms of the
  17. ** GNU General Public License version 2 as published by the Free Software
  18. ** Foundation and appearing in the file LICENSE.GPL included in the
  19. ** packaging of this file.
  20. **
  21. ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
  22. ** licenses may use this file in accordance with the Qt Commercial License
  23. ** Agreement provided with the Software.
  24. **
  25. ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
  26. ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  27. **
  28. ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
  29. **   information about Qt Commercial License Agreements.
  30. ** See http://www.trolltech.com/qpl/ for QPL licensing information.
  31. ** See http://www.trolltech.com/gpl/ for GPL licensing information.
  32. **
  33. ** Contact info@trolltech.com if any conditions of this licensing are
  34. ** not clear to you.
  35. **
  36. **********************************************************************/
  37.  
  38. #ifndef QSTRLIST_H
  39. #define QSTRLIST_H
  40.  
  41. #ifndef QT_H
  42. #include "qstring.h"
  43. #include "qptrlist.h"
  44. #include "qdatastream.h"
  45. #endif // QT_H
  46.  
  47.  
  48. #if defined(Q_TEMPLATEDLL)
  49. template class Q_EXPORT QPtrList<char>;
  50. template class Q_EXPORT QPtrListIterator<char>;
  51. #endif
  52.  
  53. #if defined(Q_QDOC)
  54. class QStrListIterator : public QPtrListIterator<char>
  55. {
  56. };
  57. #else
  58. typedef QPtrListIterator<char> QStrListIterator;
  59. #endif
  60.  
  61. class Q_EXPORT QStrList : public QPtrList<char>
  62. {
  63. public:
  64.     QStrList( bool deepCopies=TRUE ) { dc = deepCopies; del_item = deepCopies; }
  65.     QStrList( const QStrList & );
  66.     ~QStrList()            { clear(); }
  67.     QStrList& operator=( const QStrList & );
  68.  
  69. private:
  70.     QPtrCollection::Item newItem( QPtrCollection::Item d ) { return dc ? qstrdup( (const char*)d ) : d; }
  71.     void deleteItem( QPtrCollection::Item d ) { if ( del_item ) delete[] (char*)d; }
  72.     int compareItems( QPtrCollection::Item s1, QPtrCollection::Item s2 ) { return qstrcmp((const char*)s1,
  73.                              (const char*)s2); }
  74. #ifndef QT_NO_DATASTREAM
  75.     QDataStream &read( QDataStream &s, QPtrCollection::Item &d )
  76.                 { s >> (char *&)d; return s; }
  77.     QDataStream &write( QDataStream &s, QPtrCollection::Item d ) const
  78.                 { return s << (const char *)d; }
  79. #endif
  80.     bool  dc;
  81. };
  82.  
  83.  
  84. class Q_EXPORT QStrIList : public QStrList    // case insensitive string list
  85. {
  86. public:
  87.     QStrIList( bool deepCopies=TRUE ) : QStrList( deepCopies ) {}
  88.     ~QStrIList()            { clear(); }
  89. private:
  90.     int      compareItems( QPtrCollection::Item s1, QPtrCollection::Item s2 )
  91.                 { return qstricmp((const char*)s1,
  92.                             (const char*)s2); }
  93. };
  94.  
  95.  
  96. inline QStrList & QStrList::operator=( const QStrList &strList )
  97. {
  98.     clear();
  99.     dc = strList.dc;
  100.     del_item = dc;
  101.     QPtrList<char>::operator=( strList );
  102.     return *this;
  103. }
  104.  
  105. inline QStrList::QStrList( const QStrList &strList )
  106.     : QPtrList<char>( strList )
  107. {
  108.     dc = FALSE;
  109.     operator=( strList );
  110. }
  111.  
  112. #endif // QSTRLIST_H
  113.