/*************************************************************************** * E-Com Technology Ltd. * * ECOMPACS DICOM Network Transport Libraries * Version 0.1 Beta ***************************************************************************/ #ifndef _DICOM_DSTRING_ARRAY_ #define _DICOM_DSTRING_ARRAY_ class DStringArray : public Array { public: // Nothing different with Array but add some search functions // find string starting at left, -1 if not found int Find (const DString & str) const { ArrayIterator Iter (this); while (Iter) { DString & s = Iter (); if (s == str) return Iter.GetLastIndex (); } return -1; } // find character starting at right int ReverseFind (const DString & str) const { for (int Index=GetSize (); Index; Index--) { DString s = GetAt (Index-1); if (s == str) return Index-1; } return -1; } // find character starting at zero-based index and going right int Find (const DString & str, int nStart) const { if (nStart >= GetSize ()) return -1; for (int Index = nStart; Index Iter (this); while (Iter) { DString & s = Iter (); if (! s.CompareNoCase (str)) return Iter.GetLastIndex (); } return -1; } // find character starting at right int NCReverseFind (const DString & str) const { for (int Index=GetSize (); Index; Index--) { DString s = GetAt (Index-1); if (! s.CompareNoCase (str)) return Index-1; } return -1; } // find character starting at zero-based index and going right int NCFind (const DString & str, int nStart) const { if (nStart >= GetSize ()) return -1; for (int Index = nStart; Index Iter (this); while (Iter) { DString & str = Iter (); Length += str.GetLength (); } return Length; } virtual DString ToString (void) const { return ToString (NULL); } virtual DString ToString (const char * sep) const { int seplen = strlen (sep); int length = 0; for (Array ::Iterator Iter (this); Iter; Iter++) { DString & str = Iter (); length += str.GetLength () + 2; if (sep) length += seplen + 2; } DString rc; rc.GetBuffer (length); for (Array ::Iterator Iter (this); Iter; Iter++) { DString & str = Iter (); rc += str; if (sep) rc += sep; } return rc; } }; #endif