demangle.h (qualifier_list<Allocator>::decode_qualifiers(string_type&, string_type&, bool) const): Made const.

* include/bits/demangle.h
(qualifier_list<Allocator>::decode_qualifiers(string_type&,
string_type&, bool) const): Made const.
(qualifier_list<Allocator>::M_printing_suppressed): Added mutable.
(_GLIBCXX_DEMANGLER_DOUT_ENTERING3, _GLIBCXX_DEMANGLER_RETURN3,
std::ostream& operator<<(std::ostream&, qualifier const&),
std::ostream& operator<<(std::ostream&, qualifier_list const&),
qualifier_list<Allocator>::decode_qualifiers(string_type&,
string_type&, bool) const,
session<Allocator>::decode_type_with_postfix(string_type&,
string_type&, qualifier_list<Allocator>*))
Added and/or changed debug-only hooks and code.

From-SVN: r73327
This commit is contained in:
Carlo Wood 2003-11-07 03:49:43 +00:00 committed by Carlo Wood
parent cafa50327c
commit 2215f7320e
2 changed files with 65 additions and 10 deletions

View File

@ -1,3 +1,18 @@
2003-11-07 Carlo Wood <carlo@alinoe.com>
* include/bits/demangle.h
(qualifier_list<Allocator>::decode_qualifiers(string_type&,
string_type&, bool) const): Made const.
(qualifier_list<Allocator>::M_printing_suppressed): Added mutable.
(_GLIBCXX_DEMANGLER_DOUT_ENTERING3, _GLIBCXX_DEMANGLER_RETURN3,
std::ostream& operator<<(std::ostream&, qualifier const&),
std::ostream& operator<<(std::ostream&, qualifier_list const&),
qualifier_list<Allocator>::decode_qualifiers(string_type&,
string_type&, bool) const,
session<Allocator>::decode_type_with_postfix(string_type&,
string_type&, qualifier_list<Allocator>*))
Added and/or changed debug-only hooks and code.
2003-11-04 Jeffrey D. Oldham <oldham@codesourcery.com> 2003-11-04 Jeffrey D. Oldham <oldham@codesourcery.com>
* libsupc++/vec.cc (__cxa_vec_delete2): If given a NULL pointer, * libsupc++/vec.cc (__cxa_vec_delete2): If given a NULL pointer,

View File

@ -40,10 +40,10 @@
#define _GLIBCXX_DEMANGLER_DOUT(cntrl, data) #define _GLIBCXX_DEMANGLER_DOUT(cntrl, data)
#define _GLIBCXX_DEMANGLER_DOUT_ENTERING(x) #define _GLIBCXX_DEMANGLER_DOUT_ENTERING(x)
#define _GLIBCXX_DEMANGLER_DOUT_ENTERING2(x) #define _GLIBCXX_DEMANGLER_DOUT_ENTERING2(x)
#define _GLIBCXX_DEMANGLER_RETURN \ #define _GLIBCXX_DEMANGLER_DOUT_ENTERING3(x)
return M_result #define _GLIBCXX_DEMANGLER_RETURN return M_result
#define _GLIBCXX_DEMANGLER_RETURN2 \ #define _GLIBCXX_DEMANGLER_RETURN2 return M_result
return M_result #define _GLIBCXX_DEMANGLER_RETURN3
#define _GLIBCXX_DEMANGLER_FAILURE \ #define _GLIBCXX_DEMANGLER_FAILURE \
do { M_result = false; return false; } while(0) do { M_result = false; return false; } while(0)
#else #else
@ -192,6 +192,28 @@ namespace __gnu_cxx
part_of_substitution(void) const part_of_substitution(void) const
{ return M_part_of_substitution; } { return M_part_of_substitution; }
#if _GLIBCXX_DEMANGLER_CWDEBUG
friend std::ostream& operator<<(std::ostream& os, qualifier const& qual)
{
os << (char)qual.M_qualifier1;
if (qual.M_qualifier1 == vendor_extension ||
qual.M_qualifier1 == array ||
qual.M_qualifier1 == pointer_to_member)
os << " [" << qual.M_optional_type << ']';
else if (qual.M_qualifier1 == 'K' ||
qual.M_qualifier1 == 'V' ||
qual.M_qualifier1 == 'r')
{
if (qual.M_qualifier2)
{
os << (char)qual.M_qualifier2;
if (qual.M_qualifier3)
os << (char)qual.M_qualifier3;
}
}
return os;
}
#endif
}; };
template<typename Allocator> template<typename Allocator>
@ -201,7 +223,7 @@ namespace __gnu_cxx
string_type; string_type;
private: private:
bool M_printing_suppressed; mutable bool M_printing_suppressed;
std::vector<qualifier<Allocator>, Allocator> M_qualifier_starts; std::vector<qualifier<Allocator>, Allocator> M_qualifier_starts;
session<Allocator>& M_demangler; session<Allocator>& M_demangler;
@ -240,7 +262,7 @@ namespace __gnu_cxx
void void
decode_qualifiers(string_type& prefix, decode_qualifiers(string_type& prefix,
string_type& postfix, string_type& postfix,
bool member_function_pointer_qualifiers); bool member_function_pointer_qualifiers) const;
bool bool
suppressed(void) const suppressed(void) const
@ -254,6 +276,23 @@ namespace __gnu_cxx
size(void) const size(void) const
{ return M_qualifier_starts.size(); } { return M_qualifier_starts.size(); }
#if _GLIBCXX_DEMANGLER_CWDEBUG
friend std::ostream& operator<<(std::ostream& os, qualifier_list const& list)
{
typename std::vector<qualifier<Allocator>, Allocator>::const_iterator
iter = list.M_qualifier_starts.begin();
if (iter != list.M_qualifier_starts.end())
{
os << "{ " << *iter;
while (++iter != list.M_qualifier_starts.end())
os << ", " << *iter;
os << " }";
}
else
os << "{ }";
return os;
}
#endif
}; };
template<typename Allocator> template<typename Allocator>
@ -1377,10 +1416,11 @@ namespace __gnu_cxx
qualifier_list<Allocator>::decode_qualifiers( qualifier_list<Allocator>::decode_qualifiers(
string_type& prefix, string_type& prefix,
string_type& postfix, string_type& postfix,
bool member_function_pointer_qualifiers = false) bool member_function_pointer_qualifiers = false) const
{ {
_GLIBCXX_DEMANGLER_DOUT_ENTERING3("decode_qualifiers");
for(typename std::vector<qualifier<Allocator>, Allocator>:: for(typename std::vector<qualifier<Allocator>, Allocator>::
reverse_iterator iter = M_qualifier_starts.rbegin(); const_reverse_iterator iter = M_qualifier_starts.rbegin();
iter != M_qualifier_starts.rend();) iter != M_qualifier_starts.rend();)
{ {
if (!member_function_pointer_qualifiers if (!member_function_pointer_qualifiers
@ -1442,6 +1482,7 @@ namespace __gnu_cxx
++iter; ++iter;
} }
M_printing_suppressed = false; M_printing_suppressed = false;
_GLIBCXX_DEMANGLER_RETURN3;
} }
// //
@ -1451,8 +1492,7 @@ namespace __gnu_cxx
string_type& prefix, string_type& postfix, string_type& prefix, string_type& postfix,
qualifier_list<Allocator>* qualifiers) qualifier_list<Allocator>* qualifiers)
{ {
_GLIBCXX_DEMANGLER_DOUT_ENTERING2 _GLIBCXX_DEMANGLER_DOUT_ENTERING2("decode_type");
(qualifiers ? "decode_type" : "decode_type[with qualifiers]");
++M_inside_type; ++M_inside_type;
bool recursive_template_param_or_substitution_call; bool recursive_template_param_or_substitution_call;
if (!(recursive_template_param_or_substitution_call = qualifiers)) if (!(recursive_template_param_or_substitution_call = qualifiers))