// operations
// delete all nodes
- virtual void Clear();
+ void Clear();
// instruct it to destroy user data when deleting nodes
void DeleteContents(bool destroy) { m_destroy = destroy; }
wxStringList() { DeleteContents(TRUE); }
wxStringList(const char *first ...);
+ // copying the string list: the strings are copied, too (extremely
+ // inefficient!)
+ wxStringList(const wxStringList& other) { DoCopy(other); }
+ wxStringList& operator=(const wxStringList& other)
+ { Clear(); DoCopy(other); return *this; }
+
// operations
// makes a copy of the string
wxNode *Add(const char *s)
wxNode *First() const { return (wxNode *)GetFirst(); }
wxNode *Last() const { return (wxNode *)GetLast(); }
wxNode *Nth(size_t index) const { return (wxNode *)Item(index); }
+
+private:
+ void DoCopy(const wxStringList&); // common part of copy ctor and operator=
};
#endif // wxLIST_COMPATIBILITY
delete [] (char *)GetData();
}
+void wxStringList::DoCopy(const wxStringList& other)
+{
+ wxASSERT( GetCount() == 0 ); // this list must be empty before copying!
+
+ size_t count = other.GetCount();
+ for ( size_t n = 0; n < count; n++ )
+ {
+ Add(other.Item(n)->GetData());
+ }
+}
+
// Variable argument list, terminated by a zero
// Makes new storage for the strings
wxStringList::wxStringList (const char *first, ...)