X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b4da152ea3ec3968fb2f304b6ed73e0279c19506..9c9c3d7a8f6c4ee3481674e901d34714ee18915d:/src/msw/dde.cpp diff --git a/src/msw/dde.cpp b/src/msw/dde.cpp index 4487bd6a6d..a03da5030b 100644 --- a/src/msw/dde.cpp +++ b/src/msw/dde.cpp @@ -124,12 +124,18 @@ static void DDELogError(const wxString& s, UINT error = DMLERR_NO_ERROR); static DWORD DDEIdInst = 0L; static wxDDEConnection *DDECurrentlyConnecting = NULL; - static wxList wxAtomTable(wxKEY_STRING); -static wxList wxDDEClientObjects; -static wxList wxDDEServerObjects; -static bool DDEInitialized = FALSE; +#include "wx/listimpl.cpp" + +WX_DEFINE_LIST(wxDDEClientList); +WX_DEFINE_LIST(wxDDEServerList); +WX_DEFINE_LIST(wxDDEConnectionList); + +static wxDDEClientList wxDDEClientObjects; +static wxDDEServerList wxDDEServerObjects; + +static bool DDEInitialized = false; // ---------------------------------------------------------------------------- // private classes @@ -142,7 +148,7 @@ class wxDDEModule : public wxModule { public: wxDDEModule() {} - bool OnInit() { return TRUE; } + bool OnInit() { return true; } void OnExit() { wxDDECleanUp(); } private: @@ -180,20 +186,20 @@ extern void wxDDEInitialize() } else { - DDEInitialized = TRUE; + DDEInitialized = true; } } } void wxDDECleanUp() { - wxDDEClientObjects.DeleteContents(TRUE); + wxDDEClientObjects.DeleteContents(true); wxDDEClientObjects.Clear(); - wxDDEClientObjects.DeleteContents(FALSE); + wxDDEClientObjects.DeleteContents(false); - wxDDEServerObjects.DeleteContents(TRUE); + wxDDEServerObjects.DeleteContents(true); wxDDEServerObjects.Clear(); - wxDDEServerObjects.DeleteContents(FALSE); + wxDDEServerObjects.DeleteContents(false); wxAtomTable.Clear(); @@ -211,64 +217,75 @@ void wxDDECleanUp() // Global find connection static wxDDEConnection *DDEFindConnection(HCONV hConv) { - wxNode *node = wxDDEServerObjects.First(); - wxDDEConnection *found = NULL; - while (node && !found) - { - wxDDEServer *object = (wxDDEServer *)node->Data(); - found = object->FindConnection((WXHCONV) hConv); - node = node->Next(); - } - if (found) - return found; - - node = wxDDEClientObjects.First(); - while (node && !found) - { - wxDDEClient *object = (wxDDEClient *)node->Data(); - found = object->FindConnection((WXHCONV) hConv); - node = node->Next(); - } - return found; + wxDDEServerList::Node *serverNode = wxDDEServerObjects.GetFirst(); + wxDDEConnection *found = NULL; + while (serverNode && !found) + { + wxDDEServer *object = serverNode->GetData(); + found = object->FindConnection((WXHCONV) hConv); + serverNode = serverNode->GetNext(); + } + + if (found) + { + return found; + } + + wxDDEClientList::Node *clientNode = wxDDEClientObjects.GetFirst(); + while (clientNode && !found) + { + wxDDEClient *object = clientNode->GetData(); + found = object->FindConnection((WXHCONV) hConv); + clientNode = clientNode->GetNext(); + } + return found; } // Global delete connection static void DDEDeleteConnection(HCONV hConv) { - wxNode *node = wxDDEServerObjects.First(); - bool found = FALSE; - while (node && !found) - { - wxDDEServer *object = (wxDDEServer *)node->Data(); - found = object->DeleteConnection((WXHCONV) hConv); - node = node->Next(); - } - if (found) - return; - - node = wxDDEClientObjects.First(); - while (node && !found) - { - wxDDEClient *object = (wxDDEClient *)node->Data(); - found = object->DeleteConnection((WXHCONV) hConv); - node = node->Next(); - } + wxDDEServerList::Node *serverNode = wxDDEServerObjects.GetFirst(); + bool found = false; + while (serverNode && !found) + { + wxDDEServer *object = serverNode->GetData(); + found = object->DeleteConnection((WXHCONV) hConv); + serverNode = serverNode->GetNext(); + } + if (found) + { + return; + } + + wxDDEClientList::Node *clientNode = wxDDEClientObjects.GetFirst(); + while (clientNode && !found) + { + wxDDEClient *object = clientNode->GetData(); + found = object->DeleteConnection((WXHCONV) hConv); + clientNode = clientNode->GetNext(); + } } // Find a server from a service name static wxDDEServer *DDEFindServer(const wxString& s) { - wxNode *node = wxDDEServerObjects.First(); - wxDDEServer *found = NULL; - while (node && !found) - { - wxDDEServer *object = (wxDDEServer *)node->Data(); - - if (object->GetServiceName() == s) - found = object; - else node = node->Next(); - } - return found; + wxDDEServerList::Node *node = wxDDEServerObjects.GetFirst(); + wxDDEServer *found = NULL; + while (node && !found) + { + wxDDEServer *object = node->GetData(); + + if (object->GetServiceName() == s) + { + found = object; + } + else + { + node = node->GetNext(); + } + } + + return found; } // ---------------------------------------------------------------------------- @@ -291,10 +308,10 @@ bool wxDDEServer::Create(const wxString& server) DDELogError(wxString::Format(_("Failed to register DDE server '%s'"), server.c_str())); - return FALSE; + return false; } - return TRUE; + return true; } wxDDEServer::~wxDDEServer() @@ -311,22 +328,22 @@ wxDDEServer::~wxDDEServer() wxDDEServerObjects.DeleteObject(this); - wxNode *node = m_connections.First(); + wxDDEConnectionList::Node *node = m_connections.GetFirst(); while (node) { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); - wxNode *next = node->Next(); + wxDDEConnection *connection = node->GetData(); + wxDDEConnectionList::Node *next = node->GetNext(); connection->SetConnected(false); connection->OnDisconnect(); // May delete the node implicitly node = next; } // If any left after this, delete them - node = m_connections.First(); + node = m_connections.GetFirst(); while (node) { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); - wxNode *next = node->Next(); + wxDDEConnection *connection = node->GetData(); + wxDDEConnectionList::Node *next = node->GetNext(); delete connection; node = next; } @@ -339,14 +356,14 @@ wxConnectionBase *wxDDEServer::OnAcceptConnection(const wxString& /* topic */) wxDDEConnection *wxDDEServer::FindConnection(WXHCONV conv) { - wxNode *node = m_connections.First(); + wxDDEConnectionList::Node *node = m_connections.GetFirst(); wxDDEConnection *found = NULL; while (node && !found) { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); + wxDDEConnection *connection = node->GetData(); if (connection->m_hConv == conv) found = connection; - else node = node->Next(); + else node = node->GetNext(); } return found; } @@ -354,17 +371,20 @@ wxDDEConnection *wxDDEServer::FindConnection(WXHCONV conv) // Only delete the entry in the map, not the actual connection bool wxDDEServer::DeleteConnection(WXHCONV conv) { - wxNode *node = m_connections.First(); - bool found = FALSE; + wxDDEConnectionList::Node *node = m_connections.GetFirst(); + bool found = false; while (node && !found) { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); + wxDDEConnection *connection = node->GetData(); if (connection->m_hConv == conv) { - found = TRUE; + found = true; delete node; } - else node = node->Next(); + else + { + node = node->GetNext(); + } } return found; } @@ -383,18 +403,18 @@ wxDDEClient::wxDDEClient() wxDDEClient::~wxDDEClient() { wxDDEClientObjects.DeleteObject(this); - wxNode *node = m_connections.First(); + wxDDEConnectionList::Node *node = m_connections.GetFirst(); while (node) { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); + wxDDEConnection *connection = node->GetData(); delete connection; // Deletes the node implicitly (see ~wxDDEConnection) - node = m_connections.First(); + node = m_connections.GetFirst(); } } bool wxDDEClient::ValidHost(const wxString& /* host */) { - return TRUE; + return true; } wxConnectionBase *wxDDEClient::MakeConnection(const wxString& WXUNUSED(host), @@ -431,14 +451,14 @@ wxConnectionBase *wxDDEClient::OnMakeConnection() wxDDEConnection *wxDDEClient::FindConnection(WXHCONV conv) { - wxNode *node = m_connections.First(); + wxDDEConnectionList::Node *node = m_connections.GetFirst(); wxDDEConnection *found = NULL; while (node && !found) { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); + wxDDEConnection *connection = node->GetData(); if (connection->m_hConv == conv) found = connection; - else node = node->Next(); + else node = node->GetNext(); } return found; } @@ -446,17 +466,17 @@ wxDDEConnection *wxDDEClient::FindConnection(WXHCONV conv) // Only delete the entry in the map, not the actual connection bool wxDDEClient::DeleteConnection(WXHCONV conv) { - wxNode *node = m_connections.First(); - bool found = FALSE; + wxDDEConnectionList::Node *node = m_connections.GetFirst(); + bool found = false; while (node && !found) { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); + wxDDEConnection *connection = node->GetData(); if (connection->m_hConv == conv) { - found = TRUE; + found = true; delete node; } - else node = node->Next(); + else node = node->GetNext(); } return found; } @@ -660,7 +680,7 @@ bool wxDDEConnection::Advise(const wxString& item, bool wxDDEConnection::OnDisconnect() { delete this; - return TRUE; + return true; } // ---------------------------------------------------------------------------- @@ -697,7 +717,7 @@ _DDECallback(WORD wType, connection->m_hConv = 0; connection->m_topicName = topic; DDECurrentlyConnecting = connection; - return (DDERETURN)(DWORD)TRUE; + return (DDERETURN)(DWORD)true; } } break; @@ -709,7 +729,7 @@ _DDECallback(WORD wType, { DDECurrentlyConnecting->m_hConv = (WXHCONV) hConv; DDECurrentlyConnecting = NULL; - return (DDERETURN)(DWORD)TRUE; + return (DDERETURN)(DWORD)true; } break; } @@ -723,7 +743,7 @@ _DDECallback(WORD wType, if (connection->OnDisconnect()) { DDEDeleteConnection(hConv); // Delete mapping: hConv => connection - return (DDERETURN)(DWORD)TRUE; + return (DDERETURN)(DWORD)true; } } break; @@ -925,11 +945,11 @@ static HSZ DDEGetAtom(const wxString& string) { wxNode *node = wxAtomTable.Find(string); if (node) - return (HSZ)node->Data(); + return (HSZ)node->GetData(); else { DDEAddAtom(string); - return (HSZ)(wxAtomTable.Find(string)->Data()); + return (HSZ)(wxAtomTable.Find(string)->GetData()); } }