| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        arrstr.h
 
- // Purpose:     interface of wxArrayString
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     @class wxArrayString
 
-     wxArrayString is an efficient container for storing wxString objects.
 
-     It has the same features as all wxArray classes, i.e. it dynamically expands
 
-     when new items are added to it (so it is as easy to use as a linked list),
 
-     but the access time to the elements is constant, instead of being linear in
 
-     number of elements as in the case of linked lists. It is also very size
 
-     efficient and doesn't take more space than a C array @e wxString[] type
 
-     (wxArrayString uses its knowledge of internals of wxString class to achieve this).
 
-     This class is used in the same way as other dynamic arrays(), except that no
 
-     ::WX_DEFINE_ARRAY declaration is needed for it.
 
-     When a string is added or inserted in the array, a copy of the string is created,
 
-     so the original string may be safely deleted (e.g. if it was a @e wxChar *
 
-     pointer the memory it was using can be freed immediately after this).
 
-     In general, there is no need to worry about string memory deallocation when using
 
-     this class - it will always free the memory it uses itself.
 
-     The references returned by wxArrayString::Item, wxArrayString::Last or
 
-     wxArrayString::operator[] are not constant, so the array elements may
 
-     be modified in place like this:
 
-     @code
 
-     array.Last().MakeUpper();
 
-     @endcode
 
-     @note none of the methods of wxArrayString is virtual including its
 
-           destructor, so this class should not be used as a base class.
 
-     Although this is not true strictly speaking, this class may be considered as
 
-     a specialization of wxArray class for the wxString member data: it is not
 
-     implemented like this, but it does have all of the wxArray functions.
 
-     It also has the full set of <tt>std::vector<wxString></tt> compatible
 
-     methods, including nested @c iterator and @c const_iterator classes which
 
-     should be used in the new code for forward compatibility with the future
 
-     wxWidgets versions.
 
-     @library{wxbase}
 
-     @category{containers}
 
-     @see wxArray<T>, wxString, @ref overview_string
 
- */
 
- class wxArrayString : public wxArray
 
- {
 
- public:
 
-     /**
 
-         The function type used with wxArrayString::Sort function.
 
-     */
 
-     typedef int (*CompareFunction)(const wxString& first, const wxString& second);
 
-     /**
 
-         Default constructor.
 
-     */
 
-     wxArrayString();
 
-     /**
 
-         Copy constructor.
 
-     */
 
-     wxArrayString(const wxArrayString& array);
 
-     //@{
 
-     /**
 
-         Constructor from a C string array. Pass a size @a sz and an array @a arr.
 
-     **/
 
-     wxArrayString(size_t sz, const char** arr);
 
-     wxArrayString(size_t sz, const wchar_t** arr);
 
-     //@}
 
-     /**
 
-         Constructor from a wxString array. Pass a size @a sz and array @a arr.
 
-     */
 
-     wxArrayString(size_t sz, const wxString* arr);
 
-     /**
 
-         Destructor frees memory occupied by the array strings. For performance
 
-         reasons it is not virtual, so this class should not be derived from.
 
-     */
 
-     ~wxArrayString();
 
-     /**
 
-         Appends the given number of @a copies of the new item @a str to the
 
-         array and returns the index of the first new item in the array.
 
-         @see Insert()
 
-     */
 
-     size_t Add(const wxString& str, size_t copies = 1);
 
-     /**
 
-         Preallocates enough memory to store @a nCount items.
 
-         This function may be used to improve array class performance before
 
-         adding a known number of items consecutively.
 
-     */
 
-     void Alloc(size_t nCount);
 
-     /**
 
-         Clears the array contents and frees memory.
 
-         @see Empty()
 
-     */
 
-     void Clear();
 
-     /**
 
-         Empties the array: after a call to this function GetCount() will return 0.
 
-         However, this function does not free the memory used by the array and so
 
-         should be used when the array is going to be reused for storing other strings.
 
-         Otherwise, you should use Clear() to empty the array and free memory.
 
-     */
 
-     void Empty();
 
-     /**
 
-         Returns the number of items in the array.
 
-     */
 
-     size_t GetCount() const;
 
-     /**
 
-         Search the element in the array, starting from the beginning if @a bFromEnd
 
-         is @false or from end otherwise. If @a bCase, comparison is case sensitive
 
-         (default), otherwise the case is ignored.
 
-         This function uses linear search for wxArrayString.
 
-         Returns index of the first item matched or @c wxNOT_FOUND if there is no match.
 
-     */
 
-     int Index(const wxString& sz, bool bCase = true, bool bFromEnd = false) const;
 
-     /**
 
-         Insert the given number of @a copies of the new element in the array before the
 
-         position @a nIndex. Thus, for example, to insert the string in the beginning of
 
-         the array you would write:
 
-         @code
 
-         Insert("foo", 0);
 
-         @endcode
 
-         If @a nIndex is equal to GetCount() this function behaves as Add().
 
-     */
 
-     void Insert(wxString lItem, size_t nIndex, size_t copies = 1);
 
-     /**
 
-         Returns @true if the array is empty, @false otherwise. This function returns the
 
-         same result as GetCount() == 0 but is probably easier to read.
 
-     */
 
-     bool IsEmpty() const;
 
-     /**
 
-         Return the array element at position @a nIndex. An assert failure will
 
-         result from an attempt to access an element beyond the end of array in debug
 
-         mode, but no check is done in release mode.
 
-         @see operator[] for the operator version.
 
-     */
 
-     //@{
 
-     wxString& Item(size_t nIndex);
 
-     const wxString& Item(size_t nIndex) const;
 
-     //@}
 
-     /**
 
-         Returns the last element of the array. Attempt to access the last element of
 
-         an empty array will result in assert failure in debug build, however no checks
 
-         are done in release mode.
 
-     */
 
-     //@{
 
-     wxString& Last();
 
-     const wxString& Last() const;
 
-     //@}
 
-     /**
 
-         Removes the first item matching this value. An assert failure is provoked by
 
-         an attempt to remove an element which does not exist in debug build.
 
-         @see Index()
 
-     */
 
-     void Remove(const wxString& sz);
 
-     /**
 
-         Removes @a count items starting at position @a nIndex from the array.
 
-     */
 
-     void RemoveAt(size_t nIndex, size_t count = 1);
 
-     /**
 
-         Releases the extra memory allocated by the array.
 
-         This function is useful to minimize the array memory consumption.
 
-         @see Alloc()
 
-     */
 
-     void Shrink();
 
-     /**
 
-         Sorts the array in alphabetical order or in reverse alphabetical order if
 
-         @a reverseOrder is @true. The sort is case-sensitive.
 
-     */
 
-     void Sort(bool reverseOrder = false);
 
-     /**
 
-         Sorts the array using the specified @a compareFunction for item comparison.
 
-         @a CompareFunction is defined as a function taking two <em>const wxString&</em>
 
-         parameters and returning an @e int value less than, equal to or greater
 
-         than 0 if the first string is less than, equal to or greater than the
 
-         second one.
 
-         Example:
 
-         The following example sorts strings by their length.
 
-         @code
 
-         static int CompareStringLen(const wxString& first, const wxString& second)
 
-         {
 
-             return first.length() - second.length();
 
-         }
 
-         ...
 
-         wxArrayString array;
 
-         array.Add("one");
 
-         array.Add("two");
 
-         array.Add("three");
 
-         array.Add("four");
 
-         array.Sort(CompareStringLen);
 
-         @endcode
 
-     */
 
-     void Sort(CompareFunction compareFunction);
 
-     /**
 
-         Compares 2 arrays respecting the case. Returns @true if the arrays have
 
-         different number of elements or if the elements don't match pairwise.
 
-     */
 
-     bool operator !=(const wxArrayString& array) const;
 
-     /**
 
-         Assignment operator.
 
-     */
 
-     wxArrayString& operator=(const wxArrayString&);
 
-     /**
 
-         Compares 2 arrays respecting the case. Returns @true only if the arrays have
 
-         the same number of elements and the same strings in the same order.
 
-     */
 
-     bool operator ==(const wxArrayString& array) const;
 
-     /**
 
-         Return the array element at position @a nIndex. An assert failure will
 
-         result from an attempt to access an element beyond the end of array in
 
-         debug mode, but no check is done in release mode.
 
-         This is the operator version of the Item() method.
 
-     */
 
-     wxString& operator[](size_t nIndex) const;
 
- };
 
- /**
 
-     @class wxSortedArrayString
 
-     wxSortedArrayString is an efficient container for storing wxString objects
 
-     which always keeps the string in alphabetical order.
 
-     wxSortedArrayString uses binary search in its wxSortedArrayString::Index() method
 
-     (instead of linear search for wxArrayString::Index()) which makes it much more
 
-     efficient if you add strings to the array rarely (because, of course, you have
 
-     to pay for Index() efficiency by having Add() be slower) but search for them
 
-     often. Several methods should not be used with sorted array (basically, all
 
-     those which break the order of items) which is mentioned in their description.
 
-     @library{wxbase}
 
-     @category{containers}
 
-     @see wxArray, wxString, @ref overview_string
 
- */
 
- class wxSortedArrayString : public wxArray
 
- {
 
- public:
 
-     /**
 
-         Conversion constructor.
 
-         Constructs a sorted array with the same contents as the (possibly
 
-         unsorted) "array" argument.
 
-     */
 
-     wxSortedArrayString(const wxArrayString& array);
 
-     /**
 
-         @copydoc wxArrayString::Add()
 
-         @warning
 
-         For sorted arrays, the index of the inserted item will not be, in general,
 
-         equal to GetCount() - 1 because the item is inserted at the correct position
 
-         to keep the array sorted and not appended.
 
-     */
 
-     size_t Add(const wxString& str, size_t copies = 1);
 
-     /**
 
-         @copydoc wxArrayString::Index()
 
-         This function uses binary search for wxSortedArrayString, but it ignores
 
-         the @a bCase and @a bFromEnd parameters.
 
-     */
 
-     int Index(const wxString& sz, bool bCase = true,
 
-               bool bFromEnd = false) const;
 
-     /**
 
-         @warning This function should not be used with sorted arrays because it
 
-                  could break the order of items and, for example, subsequent calls
 
-                  to Index() would then not work!
 
-         @warning In STL mode, Insert is private and simply invokes wxFAIL_MSG.
 
-     */
 
-     void Insert(const wxString& str, size_t nIndex,
 
-                 size_t copies = 1);
 
-     //@{
 
-     /**
 
-         @warning This function should not be used with sorted array because it could
 
-                  break the order of items and, for example, subsequent calls to Index()
 
-                  would then not work! Also, sorting a wxSortedArrayString doesn't make
 
-                  sense because its elements are always already sorted.
 
-         @warning In STL mode, Sort is private and simply invokes wxFAIL_MSG.
 
-     */
 
-     void Sort(bool reverseOrder = false);
 
-     void Sort(CompareFunction compareFunction);
 
-     //@}
 
- };
 
- // ============================================================================
 
- // Global functions/macros
 
- // ============================================================================
 
- /** @addtogroup group_funcmacro_string */
 
- //@{
 
- /**
 
-     Splits the given wxString object using the separator @a sep and returns the
 
-     result as a wxArrayString.
 
-     If the @a escape character is non-@NULL, then the occurrences of @a sep
 
-     immediately prefixed with @a escape are not considered as separators.
 
-     Note that empty tokens will be generated if there are two or more adjacent
 
-     separators.
 
-     @see wxJoin()
 
-     @header{wx/arrstr.h}
 
- */
 
- wxArrayString wxSplit(const wxString& str, const wxChar sep,
 
-                       const wxChar escape = '\\');
 
- /**
 
-     Concatenate all lines of the given wxArrayString object using the separator
 
-     @a sep and returns the result as a wxString.
 
-     If the @a escape character is non-@NULL, then it's used as prefix for each
 
-     occurrence of @a sep in the strings contained in @a arr before joining them
 
-     which is necessary in order to be able to recover the original array
 
-     contents from the string later using wxSplit().
 
-     @see wxSplit()
 
-     @header{wx/arrstr.h}
 
- */
 
- wxString wxJoin(const wxArrayString& arr, const wxChar sep,
 
-                 const wxChar escape = '\\');
 
- //@}
 
 
  |