]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/list.h
send more page change events (patch 750521); document this behaviour
[wxWidgets.git] / include / wx / list.h
index 1fd7c4808ef71c75dac0823eccb565b9b4eed2ef..e3c8284fb63901bfffcea718848ce11b28a70a4e 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     29/01/98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Julian Smart
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /*
@@ -25,7 +25,7 @@
 #ifndef _WX_LISTH__
 #define _WX_LISTH__
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
 #pragma interface "list.h"
 #endif
 
 #include "wx/object.h"
 #include "wx/string.h"
 
-// due to circular header dependencies this function has to be declared here
-// (normally it's found in utils.h which includes itself list.h...)
-extern WXDLLEXPORT wxChar* copystring(const wxChar *s);
-
-class WXDLLEXPORT wxObjectListNode;
+class WXDLLIMPEXP_BASE wxObjectListNode;
 typedef wxObjectListNode wxNode;
 
 // undef it to get rid of old, deprecated functions
@@ -88,7 +84,7 @@ union wxListKeyValue
 // for any keyed operation instead of 2 almost equivalent. OTOH, it's needed to
 // resolve ambiguity which we would otherwise have with wxStringList::Find() and
 // wxList::Find(const char *).
-class WXDLLEXPORT wxListKey
+class WXDLLIMPEXP_BASE wxListKey
 {
 public:
     // implicit ctors
@@ -129,11 +125,11 @@ private:
 // wxNodeBase class is a (base for) node in a double linked list
 // -----------------------------------------------------------------------------
 
-WXDLLEXPORT_DATA(extern wxListKey) wxDefaultListKey;
+WXDLLIMPEXP_DATA_BASE(extern wxListKey) wxDefaultListKey;
 
-class WXDLLEXPORT wxListBase;
+class WXDLLIMPEXP_BASE wxListBase;
 
-class WXDLLEXPORT wxNodeBase
+class WXDLLIMPEXP_BASE wxNodeBase
 {
 friend class wxListBase;
 public:
@@ -155,10 +151,10 @@ public:
     void SetKeyInteger(long i) { m_key.integer = i; }
 
 #ifdef wxLIST_COMPATIBILITY
-    // compatibility methods
-    wxNode *Next() const { return (wxNode *)GetNext(); }
-    wxNode *Previous() const { return (wxNode *)GetPrevious(); }
-    wxObject *Data() const { return (wxObject *)GetData(); }
+    // compatibility methods, use Get* instead.
+    wxDEPRECATED( wxNode *Next() const );
+    wxDEPRECATED( wxNode *Previous() const );
+    wxDEPRECATED( wxObject *Data() const );
 #endif // wxLIST_COMPATIBILITY
 
 protected:
@@ -191,9 +187,11 @@ private:
 // a double-linked list class
 // -----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxListBase : public wxObject
+class wxList;
+
+class WXDLLIMPEXP_BASE wxListBase : public wxObject
 {
-friend class wxNodeBase;        // should be able to call DetachNode()
+friend class WXDLLIMPEXP_BASE wxNodeBase; // should be able to call DetachNode()
 friend class wxHashTableBase;   // should be able to call untyped Find()
 private:
         // common part of all ctors
@@ -232,10 +230,14 @@ public:
         { wxASSERT( m_count==0 ); m_keyType = keyType; }
 
 #ifdef wxLIST_COMPATIBILITY
-    int Number() const { return GetCount(); }
-    wxNode *First() const { return (wxNode *)GetFirst(); }
-    wxNode *Last() const { return (wxNode *)GetLast(); }
-    wxNode *Nth(size_t index) const { return (wxNode *)Item(index); }
+    // compatibility methods from old wxList
+    wxDEPRECATED( int Number() const );             // use GetCount instead.
+    wxDEPRECATED( wxNode *First() const );          // use GetFirst
+    wxDEPRECATED( wxNode *Last() const );           // use GetLast
+    wxDEPRECATED( wxNode *Nth(size_t n) const );    // use Item
+
+    // kludge for typesafe list migration in core classes.
+    wxDEPRECATED( operator wxList&() const );
 #endif // wxLIST_COMPATIBILITY
 
 protected:
@@ -274,8 +276,12 @@ protected:
     wxNodeBase *Item(size_t index) const;
 
         // get the list item's data
-    void *operator[](size_t index) const
-        { wxNodeBase *node = Item(index); return node ? node->GetData() : (wxNodeBase*)NULL; }
+    void *operator[](size_t n) const
+    {
+        wxNodeBase *node = Item(n);
+
+        return node ? node->GetData() : (wxNodeBase *)NULL;
+    }
 
     // operations
         // append to end of list
@@ -498,16 +504,24 @@ private:
 
 #ifdef wxLIST_COMPATIBILITY
 
+// define this to make a lot of noise about use of the old wxList classes.
+//#define wxWARN_COMPAT_LIST_USE
+
 // -----------------------------------------------------------------------------
 // wxList compatibility class: in fact, it's a list of wxObjects
 // -----------------------------------------------------------------------------
 
-WX_DECLARE_LIST_2(wxObject, wxObjectList, wxObjectListNode, class WXDLLEXPORT);
+WX_DECLARE_LIST_2(wxObject, wxObjectList, wxObjectListNode, class WXDLLIMPEXP_BASE);
 
-class WXDLLEXPORT wxList : public wxObjectList
+class WXDLLIMPEXP_BASE wxList : public wxObjectList
 {
 public:
-    wxList(int key_type = wxKEY_NONE) : wxObjectList((wxKeyType)key_type) { }
+#ifdef wxWARN_COMPAT_LIST_USE
+    wxDEPRECATED( wxList(int key_type = wxKEY_NONE) );
+#else
+    wxList(int key_type = wxKEY_NONE);
+#endif
+
     // this destructor is required for Darwin
    ~wxList() { }
 
@@ -527,15 +541,20 @@ private:
 // wxStringList class for compatibility with the old code
 // -----------------------------------------------------------------------------
 
-WX_DECLARE_LIST_2(wxChar, wxStringListBase, wxStringListNode, class WXDLLEXPORT);
+WX_DECLARE_LIST_2(wxChar, wxStringListBase, wxStringListNode, class WXDLLIMPEXP_BASE);
 
-class WXDLLEXPORT wxStringList : public wxStringListBase
+class WXDLLIMPEXP_BASE wxStringList : public wxStringListBase
 {
 public:
     // ctors and such
         // default
-    wxStringList() { DeleteContents(TRUE); }
+#ifdef wxWARN_COMPAT_LIST_USE
+    wxDEPRECATED( wxStringList() );
+    wxDEPRECATED( wxStringList(const wxChar *first ...) );
+#else
+    wxStringList();
     wxStringList(const wxChar *first ...);
+#endif
 
         // copying the string list: the strings are copied, too (extremely
         // inefficient!)
@@ -545,12 +564,10 @@ public:
 
     // operations
         // makes a copy of the string
-    wxNode *Add(const wxChar *s)
-        { return (wxNode *)wxStringListBase::Append(copystring(s)); }
+    wxNode *Add(const wxChar *s);
         
         // Append to beginning of list
-    wxNode *Prepend(const wxChar *s)
-        { return (wxNode *)wxStringListBase::Insert(copystring(s)); }
+    wxNode *Prepend(const wxChar *s);
 
     bool Delete(const wxChar *s);