-#include <set>
#include <msp/core/algorithm.h>
#include <msp/strings/format.h>
#include "buildinfo.h"
namespace {
-/** Removes any duplicate entries from a list, leaving only the first one. The
-order of other elements is preserved. O(nlogn) efficiency. */
+/** Removes any duplicate entries from a vector, leaving only the first one.
+The order of other elements is preserved. */
template<typename T>
-void unique(list<T> &l)
+void unique(vector<T> &v)
{
- set<T> seen;
- for(auto i=l.begin(); i!=l.end(); )
+ vector<T> seen;
+ for(auto i=v.begin(); i!=v.end(); )
{
- if(seen.count(*i))
- l.erase(i++);
+ auto j = lower_bound(seen, *i);
+ if(j!=seen.end() && *j==*i)
+ i = v.erase(i);
else
- seen.insert(*i++);
+ seen.insert(j, *i++);
}
}
}
-BuildInfo::BuildInfo():
- libmode(DYNAMIC),
- rpath_mode(NO_RPATH),
- threads(false),
- debug(false),
- optimize(0),
- strip(false),
- warning_level(0),
- fatal_warnings(false)
-{ }
-
BuildInfo::LibraryMode BuildInfo::get_libmode_for(const string &lib) const
{
auto i = libmodes.find(lib);