changed back the entry to use std::map for dictionaries

This commit is contained in:
Arvid Norberg 2005-09-11 09:58:34 +00:00
parent f824714b0e
commit 8c8a375168
4 changed files with 2 additions and 41 deletions

View File

@ -709,7 +709,7 @@ or a string. This is its synopsis::
{
public:
typedef std::list<std::pair<std::string, entry> > dictionary_type;
typedef std::map<std::string, entry> dictionary_type;
typedef std::string string_type;
typedef std::list<entry> list_type;
typedef size_type integer_type;

View File

@ -111,7 +111,7 @@ namespace libtorrent
// the key is always a string. If a generic entry would be allowed
// as a key, sorting would become a problem (e.g. to compare a string
// to a list). The definition doesn't mention such a limit though.
typedef std::list<std::pair<std::string, entry> > dictionary_type;
typedef std::map<std::string, entry> dictionary_type;
typedef std::string string_type;
typedef std::list<entry> list_type;
typedef size_type integer_type;
@ -145,8 +145,6 @@ namespace libtorrent
void operator=(list_type const&);
void operator=(integer_type const&);
void sort();
integer_type& integer();
const integer_type& integer() const;
string_type& string();

View File

@ -64,27 +64,6 @@ namespace
}
char const* m_str;
};
template <class It, class Pred>
void bubble_sort(It start, It end, Pred p)
{
if (start == end) return;
--end;
for (It i = start; i != end; ++i)
{
bool unsorted = false;
for (It j = i; j != end; ++j)
{
It next = boost::next(j);
if (!p(*j, *next))
{
swap(*j, *next);
unsorted = true;
}
}
if (!unsorted) return;
}
}
}
namespace libtorrent
@ -307,18 +286,6 @@ namespace libtorrent
}
}
void entry::sort()
{
using boost::bind;
if (type() == dictionary_t)
{
bubble_sort(dict().begin(), dict().end()
, bind(std::less<std::string>()
, bind(&entry::dictionary_type::value_type::first, _1)
, bind(&entry::dictionary_type::value_type::first, _2)));
}
}
void entry::print(std::ostream& os, int indent) const
{
assert(indent >= 0);

View File

@ -435,7 +435,6 @@ namespace libtorrent
{
path_e.list().push_back(*j);
}
file_e.sort();
}
}
@ -452,8 +451,6 @@ namespace libtorrent
p.append((char*)i->begin(), (char*)i->end());
}
info.sort();
return info;
}
@ -507,7 +504,6 @@ namespace libtorrent
dict["created by"] = m_created_by;
dict["info"] = create_info_metadata();
dict.sort();
entry const& info_section = dict["info"];
std::vector<char> buf;