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,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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user