Changeset View
Changeset View
Standalone View
Standalone View
libcxxabi/trunk/src/cxa_demangle.cpp
Show First 20 Lines • Show All 1,665 Lines • ▼ Show 20 Lines | if (first != last && *first == 'M') | ||||
const char* t2 = parse_type(t, last, db); | const char* t2 = parse_type(t, last, db); | ||||
if (t2 != t) | if (t2 != t) | ||||
{ | { | ||||
if (db.names.size() < 2) | if (db.names.size() < 2) | ||||
return first; | return first; | ||||
auto func = std::move(db.names.back()); | auto func = std::move(db.names.back()); | ||||
db.names.pop_back(); | db.names.pop_back(); | ||||
auto class_type = std::move(db.names.back()); | auto class_type = std::move(db.names.back()); | ||||
if (func.second.front() == '(') | if (!func.second.empty() && func.second.front() == '(') | ||||
{ | { | ||||
db.names.back().first = std::move(func.first) + "(" + class_type.move_full() + "::*"; | db.names.back().first = std::move(func.first) + "(" + class_type.move_full() + "::*"; | ||||
db.names.back().second = ")" + std::move(func.second); | db.names.back().second = ")" + std::move(func.second); | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
db.names.back().first = std::move(func.first) + " " + class_type.move_full() + "::*"; | db.names.back().first = std::move(func.first) + " " + class_type.move_full() + "::*"; | ||||
db.names.back().second = std::move(func.second); | db.names.back().second = std::move(func.second); | ||||
▲ Show 20 Lines • Show All 330 Lines • ▼ Show 20 Lines | if (first != last) | ||||
db.subs.emplace_back(db.names.get_allocator()); | db.subs.emplace_back(db.names.get_allocator()); | ||||
for (size_t k = k0; k < k1; ++k) | for (size_t k = k0; k < k1; ++k) | ||||
{ | { | ||||
if (db.names[k].second.substr(0, 2) == " [") | if (db.names[k].second.substr(0, 2) == " [") | ||||
{ | { | ||||
db.names[k].first += " ("; | db.names[k].first += " ("; | ||||
db.names[k].second.insert(0, ")"); | db.names[k].second.insert(0, ")"); | ||||
} | } | ||||
else if (db.names[k].second.front() == '(') | else if (!db.names[k].second.empty() && | ||||
db.names[k].second.front() == '(') | |||||
{ | { | ||||
db.names[k].first += "("; | db.names[k].first += "("; | ||||
db.names[k].second.insert(0, ")"); | db.names[k].second.insert(0, ")"); | ||||
} | } | ||||
db.names[k].first.append("&&"); | db.names[k].first.append("&&"); | ||||
db.subs.back().push_back(db.names[k]); | db.subs.back().push_back(db.names[k]); | ||||
} | } | ||||
first = t; | first = t; | ||||
Show All 10 Lines | if (first != last) | ||||
db.subs.emplace_back(db.names.get_allocator()); | db.subs.emplace_back(db.names.get_allocator()); | ||||
for (size_t k = k0; k < k1; ++k) | for (size_t k = k0; k < k1; ++k) | ||||
{ | { | ||||
if (db.names[k].second.substr(0, 2) == " [") | if (db.names[k].second.substr(0, 2) == " [") | ||||
{ | { | ||||
db.names[k].first += " ("; | db.names[k].first += " ("; | ||||
db.names[k].second.insert(0, ")"); | db.names[k].second.insert(0, ")"); | ||||
} | } | ||||
else if (db.names[k].second.front() == '(') | else if (!db.names[k].second.empty() && | ||||
db.names[k].second.front() == '(') | |||||
{ | { | ||||
db.names[k].first += "("; | db.names[k].first += "("; | ||||
db.names[k].second.insert(0, ")"); | db.names[k].second.insert(0, ")"); | ||||
} | } | ||||
if (first[1] != 'U' || db.names[k].first.substr(0, 12) != "objc_object<") | if (first[1] != 'U' || db.names[k].first.substr(0, 12) != "objc_object<") | ||||
{ | { | ||||
db.names[k].first.append("*"); | db.names[k].first.append("*"); | ||||
} | } | ||||
Show All 17 Lines | if (first != last) | ||||
db.subs.emplace_back(db.names.get_allocator()); | db.subs.emplace_back(db.names.get_allocator()); | ||||
for (size_t k = k0; k < k1; ++k) | for (size_t k = k0; k < k1; ++k) | ||||
{ | { | ||||
if (db.names[k].second.substr(0, 2) == " [") | if (db.names[k].second.substr(0, 2) == " [") | ||||
{ | { | ||||
db.names[k].first += " ("; | db.names[k].first += " ("; | ||||
db.names[k].second.insert(0, ")"); | db.names[k].second.insert(0, ")"); | ||||
} | } | ||||
else if (db.names[k].second.front() == '(') | else if (!db.names[k].second.empty() && | ||||
db.names[k].second.front() == '(') | |||||
{ | { | ||||
db.names[k].first += "("; | db.names[k].first += "("; | ||||
db.names[k].second.insert(0, ")"); | db.names[k].second.insert(0, ")"); | ||||
} | } | ||||
db.names[k].first.append("&"); | db.names[k].first.append("&"); | ||||
db.subs.back().push_back(db.names[k]); | db.subs.back().push_back(db.names[k]); | ||||
} | } | ||||
first = t; | first = t; | ||||
▲ Show 20 Lines • Show All 2,874 Lines • Show Last 20 Lines |