Added --use-stl to cnfigure, wxUSE_STL to setup0.h
Moved wx/datetime.inl contents to wx/datetime.h and removed inline redefinition hack. Implemented STL-like interface on top of wxList/wxArray, when wxUSE_STL=0. Implemented wxList-like and wxArray interfaces on top of std::list and std::vector, when wxUSE_STL=1. Added arrstr.h, moved wxArrayString declaration there; string.h #includes arrstr.h only if WXWIN_COMPATIBILITY_2_4 is enabled. Added WX_CLEAR_HASH_MAP, WX_CLEAR_HASH_TABLE, WX_CLEAR_LIST macros, to clear a wxHashMap, wxHashTable, wxList containing pointers: deletes pointers and makes container zero-sized. When wxUSE_STL=1, wxStringList works like a std::list<wxString>. Made wxBase compile when wxUSE_STL=1. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21768 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -38,7 +38,7 @@
|
||||
#include "wx/module.h"
|
||||
#include "wx/dde.h"
|
||||
#include "wx/intl.h"
|
||||
|
||||
#include "wx/hashmap.h"
|
||||
|
||||
#include "wx/msw/private.h"
|
||||
|
||||
@@ -122,9 +122,11 @@ static void DDELogError(const wxString& s, UINT error = DMLERR_NO_ERROR);
|
||||
// global variables
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
WX_DECLARE_STRING_HASH_MAP( HSZ, wxAtomMap );
|
||||
|
||||
static DWORD DDEIdInst = 0L;
|
||||
static wxDDEConnection *DDECurrentlyConnecting = NULL;
|
||||
static wxList wxAtomTable(wxKEY_STRING);
|
||||
static wxAtomMap wxAtomTable;
|
||||
|
||||
#include "wx/listimpl.cpp"
|
||||
|
||||
@@ -193,15 +195,10 @@ extern void wxDDEInitialize()
|
||||
|
||||
void wxDDECleanUp()
|
||||
{
|
||||
wxDDEClientObjects.DeleteContents(true);
|
||||
wxDDEClientObjects.Clear();
|
||||
wxDDEClientObjects.DeleteContents(false);
|
||||
WX_CLEAR_LIST(wxDDEClientList, wxDDEClientObjects);
|
||||
WX_CLEAR_LIST(wxDDEServerList, wxDDEServerObjects);
|
||||
|
||||
wxDDEServerObjects.DeleteContents(true);
|
||||
wxDDEServerObjects.Clear();
|
||||
wxDDEServerObjects.DeleteContents(false);
|
||||
|
||||
wxAtomTable.Clear();
|
||||
wxAtomTable.clear();
|
||||
|
||||
if ( DDEIdInst != 0 )
|
||||
{
|
||||
@@ -217,7 +214,7 @@ void wxDDECleanUp()
|
||||
// Global find connection
|
||||
static wxDDEConnection *DDEFindConnection(HCONV hConv)
|
||||
{
|
||||
wxDDEServerList::Node *serverNode = wxDDEServerObjects.GetFirst();
|
||||
wxDDEServerList::compatibility_iterator serverNode = wxDDEServerObjects.GetFirst();
|
||||
wxDDEConnection *found = NULL;
|
||||
while (serverNode && !found)
|
||||
{
|
||||
@@ -231,7 +228,7 @@ static wxDDEConnection *DDEFindConnection(HCONV hConv)
|
||||
return found;
|
||||
}
|
||||
|
||||
wxDDEClientList::Node *clientNode = wxDDEClientObjects.GetFirst();
|
||||
wxDDEClientList::compatibility_iterator clientNode = wxDDEClientObjects.GetFirst();
|
||||
while (clientNode && !found)
|
||||
{
|
||||
wxDDEClient *object = clientNode->GetData();
|
||||
@@ -244,7 +241,7 @@ static wxDDEConnection *DDEFindConnection(HCONV hConv)
|
||||
// Global delete connection
|
||||
static void DDEDeleteConnection(HCONV hConv)
|
||||
{
|
||||
wxDDEServerList::Node *serverNode = wxDDEServerObjects.GetFirst();
|
||||
wxDDEServerList::compatibility_iterator serverNode = wxDDEServerObjects.GetFirst();
|
||||
bool found = false;
|
||||
while (serverNode && !found)
|
||||
{
|
||||
@@ -257,7 +254,7 @@ static void DDEDeleteConnection(HCONV hConv)
|
||||
return;
|
||||
}
|
||||
|
||||
wxDDEClientList::Node *clientNode = wxDDEClientObjects.GetFirst();
|
||||
wxDDEClientList::compatibility_iterator clientNode = wxDDEClientObjects.GetFirst();
|
||||
while (clientNode && !found)
|
||||
{
|
||||
wxDDEClient *object = clientNode->GetData();
|
||||
@@ -269,7 +266,7 @@ static void DDEDeleteConnection(HCONV hConv)
|
||||
// Find a server from a service name
|
||||
static wxDDEServer *DDEFindServer(const wxString& s)
|
||||
{
|
||||
wxDDEServerList::Node *node = wxDDEServerObjects.GetFirst();
|
||||
wxDDEServerList::compatibility_iterator node = wxDDEServerObjects.GetFirst();
|
||||
wxDDEServer *found = NULL;
|
||||
while (node && !found)
|
||||
{
|
||||
@@ -328,11 +325,11 @@ wxDDEServer::~wxDDEServer()
|
||||
|
||||
wxDDEServerObjects.DeleteObject(this);
|
||||
|
||||
wxDDEConnectionList::Node *node = m_connections.GetFirst();
|
||||
wxDDEConnectionList::compatibility_iterator node = m_connections.GetFirst();
|
||||
while (node)
|
||||
{
|
||||
wxDDEConnection *connection = node->GetData();
|
||||
wxDDEConnectionList::Node *next = node->GetNext();
|
||||
wxDDEConnectionList::compatibility_iterator next = node->GetNext();
|
||||
connection->SetConnected(false);
|
||||
connection->OnDisconnect(); // May delete the node implicitly
|
||||
node = next;
|
||||
@@ -343,7 +340,7 @@ wxDDEServer::~wxDDEServer()
|
||||
while (node)
|
||||
{
|
||||
wxDDEConnection *connection = node->GetData();
|
||||
wxDDEConnectionList::Node *next = node->GetNext();
|
||||
wxDDEConnectionList::compatibility_iterator next = node->GetNext();
|
||||
delete connection;
|
||||
node = next;
|
||||
}
|
||||
@@ -356,7 +353,7 @@ wxConnectionBase *wxDDEServer::OnAcceptConnection(const wxString& /* topic */)
|
||||
|
||||
wxDDEConnection *wxDDEServer::FindConnection(WXHCONV conv)
|
||||
{
|
||||
wxDDEConnectionList::Node *node = m_connections.GetFirst();
|
||||
wxDDEConnectionList::compatibility_iterator node = m_connections.GetFirst();
|
||||
wxDDEConnection *found = NULL;
|
||||
while (node && !found)
|
||||
{
|
||||
@@ -371,22 +368,21 @@ wxDDEConnection *wxDDEServer::FindConnection(WXHCONV conv)
|
||||
// Only delete the entry in the map, not the actual connection
|
||||
bool wxDDEServer::DeleteConnection(WXHCONV conv)
|
||||
{
|
||||
wxDDEConnectionList::Node *node = m_connections.GetFirst();
|
||||
bool found = false;
|
||||
while (node && !found)
|
||||
wxDDEConnectionList::compatibility_iterator node = m_connections.GetFirst();
|
||||
while (node)
|
||||
{
|
||||
wxDDEConnection *connection = node->GetData();
|
||||
if (connection->m_hConv == conv)
|
||||
{
|
||||
found = true;
|
||||
delete node;
|
||||
m_connections.Erase(node);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
node = node->GetNext();
|
||||
}
|
||||
}
|
||||
return found;
|
||||
return false;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -403,7 +399,7 @@ wxDDEClient::wxDDEClient()
|
||||
wxDDEClient::~wxDDEClient()
|
||||
{
|
||||
wxDDEClientObjects.DeleteObject(this);
|
||||
wxDDEConnectionList::Node *node = m_connections.GetFirst();
|
||||
wxDDEConnectionList::compatibility_iterator node = m_connections.GetFirst();
|
||||
while (node)
|
||||
{
|
||||
wxDDEConnection *connection = node->GetData();
|
||||
@@ -451,7 +447,7 @@ wxConnectionBase *wxDDEClient::OnMakeConnection()
|
||||
|
||||
wxDDEConnection *wxDDEClient::FindConnection(WXHCONV conv)
|
||||
{
|
||||
wxDDEConnectionList::Node *node = m_connections.GetFirst();
|
||||
wxDDEConnectionList::compatibility_iterator node = m_connections.GetFirst();
|
||||
wxDDEConnection *found = NULL;
|
||||
while (node && !found)
|
||||
{
|
||||
@@ -466,19 +462,18 @@ wxDDEConnection *wxDDEClient::FindConnection(WXHCONV conv)
|
||||
// Only delete the entry in the map, not the actual connection
|
||||
bool wxDDEClient::DeleteConnection(WXHCONV conv)
|
||||
{
|
||||
wxDDEConnectionList::Node *node = m_connections.GetFirst();
|
||||
bool found = false;
|
||||
while (node && !found)
|
||||
wxDDEConnectionList::compatibility_iterator node = m_connections.GetFirst();
|
||||
while (node)
|
||||
{
|
||||
wxDDEConnection *connection = node->GetData();
|
||||
if (connection->m_hConv == conv)
|
||||
{
|
||||
found = true;
|
||||
delete node;
|
||||
m_connections.Erase(node);
|
||||
return true;
|
||||
}
|
||||
else node = node->GetNext();
|
||||
}
|
||||
return found;
|
||||
return false;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -934,23 +929,21 @@ _DDECallback(WORD wType,
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Atom table stuff
|
||||
static HSZ DDEAddAtom(const wxString& string)
|
||||
static HSZ DDEAddAtom(const wxString& str)
|
||||
{
|
||||
HSZ atom = DDEAtomFromString(string);
|
||||
wxAtomTable.Append(string, (wxObject *)atom);
|
||||
HSZ atom = DDEAtomFromString(str);
|
||||
wxAtomTable[str] = atom;
|
||||
return atom;
|
||||
}
|
||||
|
||||
static HSZ DDEGetAtom(const wxString& string)
|
||||
static HSZ DDEGetAtom(const wxString& str)
|
||||
{
|
||||
wxNode *node = wxAtomTable.Find(string);
|
||||
if (node)
|
||||
return (HSZ)node->GetData();
|
||||
else
|
||||
{
|
||||
DDEAddAtom(string);
|
||||
return (HSZ)(wxAtomTable.Find(string)->GetData());
|
||||
}
|
||||
wxAtomMap::iterator it = wxAtomTable.find(str);
|
||||
|
||||
if (it != wxAtomTable.end())
|
||||
return it->second;
|
||||
|
||||
return DDEAddAtom(str);
|
||||
}
|
||||
|
||||
// atom <-> strings
|
||||
|
Reference in New Issue
Block a user