14 if (m_qualified_name.empty()) {
21 if (!m_entries.empty()) {
22 if (m_entries.size() == 1) {
23 if (m_entries[0].name) {
24 m_qualified_name.append(
"::");
25 m_qualified_name.append(m_entries[0].name);
28 collection::const_reverse_iterator pos;
29 collection::const_reverse_iterator begin = m_entries.rbegin();
30 collection::const_reverse_iterator end = m_entries.rend();
31 for (pos = begin; pos != end; ++pos) {
33 m_qualified_name.append(
"::");
34 if (pos->name ==
nullptr) {
35 if (pos->tag == DW_TAG_namespace)
36 m_qualified_name.append(
"(anonymous namespace)");
37 else if (pos->tag == DW_TAG_class_type)
38 m_qualified_name.append(
"(anonymous class)");
39 else if (pos->tag == DW_TAG_structure_type)
40 m_qualified_name.append(
"(anonymous struct)");
41 else if (pos->tag == DW_TAG_union_type)
42 m_qualified_name.append(
"(anonymous union)");
44 m_qualified_name.append(
"(anonymous)");
46 m_qualified_name.append(pos->name);
51 if (m_qualified_name.empty())
53 return m_qualified_name.c_str();
57 if (m_entries.size() != rhs.
m_entries.size())
60 collection::const_iterator pos;
61 collection::const_iterator begin = m_entries.begin();
62 collection::const_iterator end = m_entries.end();
64 collection::const_iterator rhs_pos;
65 collection::const_iterator rhs_begin = rhs.
m_entries.begin();
69 for (pos = begin, rhs_pos = rhs_begin; pos != end; ++pos, ++rhs_pos) {
70 if (pos->tag != rhs_pos->tag) {
73 if (pos->tag == DW_TAG_structure_type &&
74 rhs_pos->tag == DW_TAG_class_type)
76 if (pos->tag == DW_TAG_class_type &&
77 rhs_pos->tag == DW_TAG_structure_type)
83 for (pos = begin, rhs_pos = rhs_begin; pos != end; ++pos, ++rhs_pos) {
84 if (!pos->NameMatches(*rhs_pos))