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:
Mattia Barbon
2003-07-08 19:52:35 +00:00
parent 0598fd99db
commit df5168c427
57 changed files with 2732 additions and 535 deletions

View File

@@ -38,8 +38,7 @@ IMPLEMENT_PROTOCOL(wxHTTP, wxT("http"), wxT("80"), TRUE)
#define HTTP_BSIZE 2048
wxHTTP::wxHTTP()
: wxProtocol(),
m_headers(wxKEY_STRING)
: wxProtocol()
{
m_addr = NULL;
m_read = FALSE;
@@ -57,17 +56,7 @@ wxHTTP::~wxHTTP()
void wxHTTP::ClearHeaders()
{
// wxString isn't a wxObject
wxNode *node = m_headers.GetFirst();
wxString *string;
while (node) {
string = (wxString *)node->GetData();
delete string;
node = node->GetNext();
}
m_headers.Clear();
m_headers.clear();
}
wxString wxHTTP::GetContentType()
@@ -87,45 +76,34 @@ void wxHTTP::SetHeader(const wxString& header, const wxString& h_data)
m_read = FALSE;
}
wxNode *node = m_headers.Find(header);
if (!node)
m_headers.Append(header.Upper(), (wxObject *)(new wxString(h_data)));
else {
wxString *str = (wxString *)node->GetData();
(*str) = h_data;
}
wxStringToStringHashMap::iterator it = m_headers.find(header);
if (it != m_headers.end())
it->second = h_data;
else
m_headers[header.Upper()] = h_data;
}
wxString wxHTTP::GetHeader(const wxString& header)
{
wxNode *node;
wxString upper_header;
wxStringToStringHashMap::iterator it = m_headers.find(header.Upper());
upper_header = header.Upper();
node = m_headers.Find(upper_header);
if (!node)
if (it == m_headers.end())
return wxEmptyString;
return *((wxString *)node->GetData());
return it->second;
}
void wxHTTP::SendHeaders()
{
wxNode *head = m_headers.GetFirst();
typedef wxStringToStringHashMap::iterator iterator;
wxString buf;
while (head)
for (iterator it = m_headers.begin(), en = m_headers.end(); it != en; ++it )
{
wxString *str = (wxString *)head->GetData();
wxString buf;
buf.Printf(wxT("%s: %s\r\n"), head->GetKeyString(), str->GetData());
buf.Printf(wxT("%s: %s\r\n"), it->first.c_str(), it->second.c_str());
const wxWX2MBbuf cbuf = buf.mb_str();
Write(cbuf, strlen(cbuf));
head = head->GetNext();
}
}
@@ -152,10 +130,9 @@ bool wxHTTP::ParseHeaders()
break;
wxString left_str = line.BeforeFirst(':');
wxString *str = new wxString(line.AfterFirst(':').Strip(wxString::both));
left_str.MakeUpper();
m_headers.Append(left_str, (wxObject *) str);
m_headers[left_str] = line.AfterFirst(':').Strip(wxString::both);
}
return TRUE;
}