Removed make_unique from namegen, was conflicting with real make_unique on windows and we're set to cxx11 still

This commit is contained in:
KimLS 2020-03-31 19:55:27 -07:00
parent d4ea9bbee0
commit 6d3848b2c7

View File

@ -125,20 +125,6 @@ const std::unordered_map<std::string, const std::vector<std::string>>& Generator
return *symbols; return *symbols;
} }
#ifdef HAVE_CXX14
using std::make_unique;
#else
// make_unique is not available in c++11, so we use this template function
// to maintain full c++11 compatibility; std::make_unique is part of C++14.
template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
{
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
#endif
Generator::Generator() Generator::Generator()
{ {
} }
@ -353,17 +339,17 @@ Generator::Generator(const std::string &pattern, bool collapse_triples) {
std::unique_ptr<Generator> last; std::unique_ptr<Generator> last;
std::stack<std::unique_ptr<Group>> stack; std::stack<std::unique_ptr<Group>> stack;
std::unique_ptr<Group> top = make_unique<GroupSymbol>(); std::unique_ptr<Group> top = std::unique_ptr<GroupSymbol>();
for (auto c : pattern) { for (auto c : pattern) {
switch (c) { switch (c) {
case '<': case '<':
stack.push(std::move(top)); stack.push(std::move(top));
top = make_unique<GroupSymbol>(); top = std::unique_ptr<GroupSymbol>();
break; break;
case '(': case '(':
stack.push(std::move(top)); stack.push(std::move(top));
top = make_unique<GroupLiteral>(); top = std::unique_ptr<GroupLiteral>();
break; break;
case '>': case '>':
case ')': case ')':
@ -408,7 +394,7 @@ Generator::Generator(const std::string &pattern, bool collapse_triples) {
std::unique_ptr<Generator> g = top->produce(); std::unique_ptr<Generator> g = top->produce();
if (collapse_triples) { if (collapse_triples) {
g = make_unique<Collapser>(std::move(g)); g = std::unique_ptr<Collapser>(new Collapser(std::move(g)));
} }
add(std::move(g)); add(std::move(g));
} }
@ -424,16 +410,16 @@ void Generator::Group::add(std::unique_ptr<Generator>&& g)
while (!wrappers.empty()) { while (!wrappers.empty()) {
switch (wrappers.top()) { switch (wrappers.top()) {
case reverser: case reverser:
g = make_unique<Reverser>(std::move(g)); g = std::unique_ptr<Reverser>(new Reverser(std::move(g)));
break; break;
case capitalizer: case capitalizer:
g = make_unique<Capitalizer>(std::move(g)); g = std::unique_ptr<Capitalizer>(new Capitalizer(std::move(g)));
break; break;
} }
wrappers.pop(); wrappers.pop();
} }
if (set.size() == 0) { if (set.size() == 0) {
set.push_back(make_unique<Sequence>()); set.push_back(std::unique_ptr<Sequence>());
} }
set.back()->add(std::move(g)); set.back()->add(std::move(g));
} }
@ -441,8 +427,8 @@ void Generator::Group::add(std::unique_ptr<Generator>&& g)
void Generator::Group::add(char c) void Generator::Group::add(char c)
{ {
std::string value(1, c); std::string value(1, c);
std::unique_ptr<Generator> g = make_unique<Random>(); std::unique_ptr<Generator> g = std::unique_ptr<Random>();
g->add(make_unique<Literal>(value)); g->add(std::unique_ptr<Literal>(new Literal(value)));
Group::add(std::move(g)); Group::add(std::move(g));
} }
@ -450,20 +436,20 @@ std::unique_ptr<Generator> Generator::Group::produce()
{ {
switch (set.size()) { switch (set.size()) {
case 0: case 0:
return make_unique<Literal>(""); return std::unique_ptr<Literal>(new Literal(""));
case 1: case 1:
return std::move(*set.begin()); return std::move(*set.begin());
default: default:
return make_unique<Random>(std::move(set)); return std::unique_ptr<Random>(new Random(std::move(set)));
} }
} }
void Generator::Group::split() void Generator::Group::split()
{ {
if (set.size() == 0) { if (set.size() == 0) {
set.push_back(make_unique<Sequence>()); set.push_back(std::unique_ptr<Sequence>());
} }
set.push_back(make_unique<Sequence>()); set.push_back(std::unique_ptr<Sequence>());
} }
void Generator::Group::wrap(wrappers_t type) void Generator::Group::wrap(wrappers_t type)
@ -479,14 +465,14 @@ Generator::GroupSymbol::GroupSymbol() :
void Generator::GroupSymbol::add(char c) void Generator::GroupSymbol::add(char c)
{ {
std::string value(1, c); std::string value(1, c);
std::unique_ptr<Generator> g = make_unique<Random>(); std::unique_ptr<Generator> g = std::unique_ptr<Random>();
try { try {
static const auto& symbols = SymbolMap(); static const auto& symbols = SymbolMap();
for (const auto& s : symbols.at(value)) { for (const auto& s : symbols.at(value)) {
g->add(make_unique<Literal>(s)); g->add(std::unique_ptr<Literal>(new Literal(s)));
} }
} catch (const std::out_of_range&) { } catch (const std::out_of_range&) {
g->add(make_unique<Literal>(value)); g->add(std::unique_ptr<Literal>(new Literal(value)));
} }
Group::add(std::move(g)); Group::add(std::move(g));
} }
@ -533,4 +519,4 @@ std::string tostring(const std::wstring & s)
} }
return std::string(buf.data(), wn); return std::string(buf.data(), wn);
} }