mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 17:18:55 +00:00
Add non-wrapping mode to ada_decode
When ada_decode encounters a name that it cannot decode, it simply wraps it in <...>, which is used elsewhere in the Ada code to indicate that a verbatim match should be done. A subequent patch needed the ability to suppress this wrapping, so this patch adds a new mode to ada_decode. 2021-06-25 Tom Tromey <tromey@adacore.com> * ada-lang.c (ada_decode): Add wrap parameter. * ada-lang.h (ada_decode): Add wrap parameter.
This commit is contained in:
@@ -976,12 +976,10 @@ ada_remove_po_subprogram_suffix (const char *encoded, int *len)
|
||||
*len = *len - 1;
|
||||
}
|
||||
|
||||
/* If ENCODED follows the GNAT entity encoding conventions, then return
|
||||
the decoded form of ENCODED. Otherwise, return "<%s>" where "%s" is
|
||||
replaced by ENCODED. */
|
||||
/* See ada-lang.h. */
|
||||
|
||||
std::string
|
||||
ada_decode (const char *encoded)
|
||||
ada_decode (const char *encoded, bool wrap)
|
||||
{
|
||||
int i, j;
|
||||
int len0;
|
||||
@@ -1216,12 +1214,14 @@ ada_decode (const char *encoded)
|
||||
return decoded;
|
||||
|
||||
Suppress:
|
||||
if (!wrap)
|
||||
return {};
|
||||
|
||||
if (encoded[0] == '<')
|
||||
decoded = encoded;
|
||||
else
|
||||
decoded = '<' + std::string(encoded) + '>';
|
||||
return decoded;
|
||||
|
||||
}
|
||||
|
||||
/* Table for keeping permanent unique copies of decoded names. Once
|
||||
|
||||
Reference in New Issue
Block a user