]> git.saurik.com Git - wxWidgets.git/commitdiff
1. removed wxObject::CopyObject() and Clone() - some objects just can't be
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 21 Nov 2001 21:44:52 +0000 (21:44 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 21 Nov 2001 21:44:52 +0000 (21:44 +0000)
   copied
2. made wxEvent::Clone() pure virtual and added missing Clone()s to the
   other event classes which this changes has helped to discover

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/dialup.h
include/wx/event.h
include/wx/generic/laywin.h
include/wx/object.h
include/wx/process.h
include/wx/sckaddr.h
include/wx/timer.h
src/common/event.cpp
src/common/http.cpp
src/common/object.cpp
src/common/sckaddr.cpp

index 765be098919afb854dba5d2ea9963fad9986e3d3..27a0c033c9769dfba5ae8ecd5fc5705113141eab 100644 (file)
@@ -179,6 +179,9 @@ public:
     // process (i.e. does it result from our own attempt to establish the
     // connection)?
     bool IsOwnEvent() const { return m_id != 0; }
+
+    // implement the base class pure virtual
+    virtual wxEvent *Clone() const { return new wxDialUpEvent(*this); }
 };
 
 // the type of dialup event handler function
index c13191c6f80a832773220f3296f5c9de3bf2387e..92f0ef19b1bce45f8867e6eee9cb7611b8b7f3b9 100644 (file)
@@ -359,8 +359,10 @@ public:
     // exists only for optimization purposes.
     bool IsCommandEvent() const { return m_isCommandEvent; }
 
-    // specialized clone function since it is done a lot
-    virtual wxEvent *Clone() const { return new wxEvent(*this); }
+    // this function is used to create a copy of the event polymorphically and
+    // all derived classes must implement it because otherwise wxPostEvent()
+    // for them wouldn't work (it needs to do a copy of the event)
+    virtual wxEvent *Clone() const = 0;
 
 public:
     wxObject*         m_eventObject;
index 7c241c701d981eca91c835785caa3ec7c2322dae..7f8b13cb39b62e123bb6ca30b62aad4a78bc55af 100644 (file)
@@ -91,6 +91,8 @@ public:
     void SetAlignment(wxLayoutAlignment align) { m_alignment = align; }
     wxLayoutAlignment GetAlignment() const { return m_alignment; }
 
+    virtual wxEvent *Clone() const { return new wxQueryLayoutInfoEvent(*this); }
+
 protected:
     int                     m_flags;
     int                     m_requestedLength;
@@ -119,13 +121,17 @@ public:
         m_flags = 0;
         m_id = id;
     }
-// Read by the app
-    inline void SetFlags(int flags) { m_flags = flags; }
-    inline int GetFlags() const { return m_flags; }
 
-// Set by the app
-    inline void SetRect(const wxRect& rect) { m_rect = rect; }
-    inline wxRect GetRect() const { return m_rect; }
+    // Read by the app
+    void SetFlags(int flags) { m_flags = flags; }
+    int GetFlags() const { return m_flags; }
+
+    // Set by the app
+    void SetRect(const wxRect& rect) { m_rect = rect; }
+    wxRect GetRect() const { return m_rect; }
+
+    virtual wxEvent *Clone() const { return new wxCalculateLayoutEvent(*this); }
+
 protected:
     int                     m_flags;
     wxRect                  m_rect;
index 845d0e238cfd187a880412387ab488cd110bc9ac..316d8d569c707f87270503b858f3828d97c505ac 100644 (file)
@@ -221,8 +221,6 @@ class WXDLLEXPORT wxObject
   virtual ~wxObject(void);
 
   virtual wxClassInfo *GetClassInfo(void) const { return &sm_classwxObject; }
-  wxObject *Clone(void) const;
-  virtual void CopyObject(wxObject& object_dest) const;
 
   bool IsKindOf(wxClassInfo *info) const;
 
index cfc4ca9627d806b3fb65d85ebdb1c5696734d7f7..91c71032ebd3b171e7ceb3f40af4b9917ffeaf05 100644 (file)
@@ -114,8 +114,12 @@ public:
         // the exit code
     int GetExitCode() { return m_exitcode; }
 
+    // implement the base class pure virtual
+    virtual wxEvent *Clone() const { return new wxProcessEvent(*this); }
+
 public:
-    int m_pid, m_exitcode;
+    int m_pid,
+        m_exitcode;
 
     DECLARE_DYNAMIC_CLASS(wxProcessEvent)
 };
index 39e518879269a9f6f7dacac6c60e7b0dce40560e..000673d1d214f7660a97e18d6b92ad60873f01c7 100644 (file)
@@ -39,7 +39,9 @@ public:
   void SetAddress(GAddress *address);
   const wxSockAddress& operator =(const wxSockAddress& addr);
 
-  void CopyObject(wxObject& dest) const;
+  // we need to be able to create copies of the addresses polymorphically (i.e.
+  // wihtout knowing the exact address class)
+  virtual wxSockAddress *Clone() const = 0;
 
 protected:
   GAddress *m_address;
@@ -61,7 +63,8 @@ public:
   wxString Hostname();
   unsigned short Service();
 
-  inline int Type() { return wxSockAddress::IPV4; }
+  virtual int Type() { return wxSockAddress::IPV4; }
+  virtual wxSockAddress *Clone() const { return new wxIPV4address(*this); }
 };
 
 #ifdef ENABLE_IPV6
@@ -82,7 +85,8 @@ public:
   wxString Hostname() const;
   unsigned short Service() const;
 
-  inline int Type() { return wxSockAddress::IPV6; }
+  virtual int Type() { return wxSockAddress::IPV6; }
+  virtual wxSockAddress *Clone() const { return new wxIPV6address(*this); }
 };
 #endif
 
@@ -103,7 +107,8 @@ public:
   void Filename(const wxString& name);
   wxString Filename();
 
-  inline int Type() { return wxSockAddress::UNIX; }
+  virtual int Type() { return wxSockAddress::UNIX; }
+  virtual wxSockAddress *Clone() const { return new wxUNIXaddress(*this); }
 };
 #endif
   // __UNIX__
index c7459e915296ed7f6bc2a89d2c831655f2ce2d8d..f835029b3cab13bc40386033dc1681cb328f2e52 100644 (file)
@@ -167,6 +167,9 @@ public:
     // accessors
     int GetInterval() const { return m_interval; }
 
+    // implement the base class pure virtual
+    virtual wxEvent *Clone() const { return new wxTimerEvent(*this); }
+
 private:
     int m_interval;
 
index 450a0faae97ccd88ce90db63de4a40cb6020f48c..5e618cc09f37839d1d944bf37e0a5dbc46b0aae2 100644 (file)
@@ -638,7 +638,7 @@ void wxEvtHandler::AddPendingEvent(wxEvent& event)
     if ( !m_pendingEvents )
       m_pendingEvents = new wxList;
 
-    wxEvent *event2 = (wxEvent *)event.Clone();
+    wxEvent *event2 = event.Clone();
 
     m_pendingEvents->Append(event2);
 
index 4bcfd768704fc7616f11407c44eec2e315960f6c..8471c3392646dbc820b88446f72a75b0ddf436ae 100644 (file)
@@ -185,11 +185,11 @@ bool wxHTTP::Connect(wxSockAddress& addr, bool WXUNUSED(wait))
 {
   if (m_addr) {
     delete m_addr;
-    m_addr = NULL;
     Close();
   }
 
-  m_addr = (wxSockAddress *) addr.Clone();
+  m_addr = addr.Clone();
+
   return TRUE;
 }
 
index 83a8fec5ad349385e424ae3bd75aee4b918ed95e..a444c031ee5ff362936e23d7589ee483e3ff51fa 100644 (file)
@@ -99,22 +99,6 @@ bool wxObject::IsKindOf(wxClassInfo *info) const
         return FALSE;
 }
 
-wxObject *wxObject::Clone() const
-{
-    wxObject *object = GetClassInfo()->CreateObject();
-    CopyObject(*object);
-    return object;
-}
-
-#ifdef __WXDEBUG__
-void wxObject::CopyObject(wxObject& object_dest) const
-#else // !Debug
-void wxObject::CopyObject(wxObject& WXUNUSED(object_dest)) const
-#endif // Debug/!Debug
-{
-    wxASSERT(object_dest.GetClassInfo()->IsKindOf(GetClassInfo()));
-}
-
 #if wxUSE_STD_IOSTREAM && (defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT)
 void wxObject::Dump(wxSTD ostream& str)
 {
index 93e0ab3266d5e4304224140b1eda9eef19ed2402..474a0f3092b576325d52afa21f1e8649211844a4 100644 (file)
@@ -72,16 +72,8 @@ const wxSockAddress& wxSockAddress::operator=(const wxSockAddress& addr)
   return *this;
 }
 
-void wxSockAddress::CopyObject(wxObject& dest) const
-{
-  wxSockAddress *addr = (wxSockAddress *)&dest;
-
-  wxObject::CopyObject(dest);
-  addr->SetAddress(GetAddress());
-}
-
 void wxSockAddress::Clear()
-{ 
+{
   GAddress_destroy(m_address);
   m_address = GAddress_new();
 }
@@ -102,7 +94,7 @@ wxIPV4address::~wxIPV4address()
 bool wxIPV4address::Hostname(const wxString& name)
 {
   // Some people are sometimes fool.
-  if (name == wxT("")) 
+  if (name == wxT(""))
   {
     wxLogWarning( _("Trying to solve a NULL hostname: giving up") );
     return FALSE;
@@ -147,7 +139,7 @@ wxString wxIPV4address::Hostname()
 
 unsigned short wxIPV4address::Service()
 {
-  return GAddress_INET_GetPort(m_address); 
+  return GAddress_INET_GetPort(m_address);
 }
 
 #if 0
@@ -196,7 +188,7 @@ const wxString& wxIPV6address::Hostname()
 
 unsigned short wxIPV6address::Service()
 {
-  return GAddress_INET_GetPort(m_address); 
+  return GAddress_INET_GetPort(m_address);
 }
 
 #endif
@@ -231,5 +223,5 @@ wxString wxUNIXaddress::Filename()
 
 #endif
 
-#endif 
+#endif
   // wxUSE_SOCKETS