in contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c [943:1209]
case SIMPLE_HASH('s', 't'):
ddata->cur += 2;
return (cpp_demangle_read_type(ddata, NULL));
case SIMPLE_HASH('s', 'r'):
ddata->cur += 2;
if (!cpp_demangle_read_type(ddata, NULL))
return (0);
if (!cpp_demangle_read_uqname(ddata))
return (0);
if (*ddata->cur == 'I')
return (cpp_demangle_read_tmpl_args(ddata));
return (1);
case SIMPLE_HASH('a', 'a'):
/* operator && */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "&&", 2));
case SIMPLE_HASH('a', 'd'):
/* operator & (unary) */
ddata->cur += 2;
return (cpp_demangle_read_expression_unary(ddata, "&", 1));
case SIMPLE_HASH('a', 'n'):
/* operator & */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "&", 1));
case SIMPLE_HASH('a', 'N'):
/* operator &= */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "&=", 2));
case SIMPLE_HASH('a', 'S'):
/* operator = */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "=", 1));
case SIMPLE_HASH('c', 'l'):
/* operator () */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "()", 2));
case SIMPLE_HASH('c', 'm'):
/* operator , */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, ",", 1));
case SIMPLE_HASH('c', 'o'):
/* operator ~ */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "~", 1));
case SIMPLE_HASH('c', 'v'):
/* operator (cast) */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "(cast)", 6));
case SIMPLE_HASH('d', 'a'):
/* operator delete [] */
ddata->cur += 2;
return (cpp_demangle_read_expression_unary(ddata, "delete []", 9));
case SIMPLE_HASH('d', 'e'):
/* operator * (unary) */
ddata->cur += 2;
return (cpp_demangle_read_expression_unary(ddata, "*", 1));
case SIMPLE_HASH('d', 'l'):
/* operator delete */
ddata->cur += 2;
return (cpp_demangle_read_expression_unary(ddata, "delete", 6));
case SIMPLE_HASH('d', 'v'):
/* operator / */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "/", 1));
case SIMPLE_HASH('d', 'V'):
/* operator /= */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "/=", 2));
case SIMPLE_HASH('e', 'o'):
/* operator ^ */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "^", 1));
case SIMPLE_HASH('e', 'O'):
/* operator ^= */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "^=", 2));
case SIMPLE_HASH('e', 'q'):
/* operator == */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "==", 2));
case SIMPLE_HASH('g', 'e'):
/* operator >= */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, ">=", 2));
case SIMPLE_HASH('g', 't'):
/* operator > */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, ">", 1));
case SIMPLE_HASH('i', 'x'):
/* operator [] */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "[]", 2));
case SIMPLE_HASH('l', 'e'):
/* operator <= */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "<=", 2));
case SIMPLE_HASH('l', 's'):
/* operator << */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "<<", 2));
case SIMPLE_HASH('l', 'S'):
/* operator <<= */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "<<=", 3));
case SIMPLE_HASH('l', 't'):
/* operator < */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "<", 1));
case SIMPLE_HASH('m', 'i'):
/* operator - */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "-", 1));
case SIMPLE_HASH('m', 'I'):
/* operator -= */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "-=", 2));
case SIMPLE_HASH('m', 'l'):
/* operator * */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "*", 1));
case SIMPLE_HASH('m', 'L'):
/* operator *= */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "*=", 2));
case SIMPLE_HASH('m', 'm'):
/* operator -- */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "--", 2));
case SIMPLE_HASH('n', 'a'):
/* operator new[] */
ddata->cur += 2;
return (cpp_demangle_read_expression_unary(ddata, "new []", 6));
case SIMPLE_HASH('n', 'e'):
/* operator != */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "!=", 2));
case SIMPLE_HASH('n', 'g'):
/* operator - (unary) */
ddata->cur += 2;
return (cpp_demangle_read_expression_unary(ddata, "-", 1));
case SIMPLE_HASH('n', 't'):
/* operator ! */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "!", 1));
case SIMPLE_HASH('n', 'w'):
/* operator new */
ddata->cur += 2;
return (cpp_demangle_read_expression_unary(ddata, "new", 3));
case SIMPLE_HASH('o', 'o'):
/* operator || */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "||", 2));
case SIMPLE_HASH('o', 'r'):
/* operator | */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "|", 1));
case SIMPLE_HASH('o', 'R'):
/* operator |= */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "|=", 2));
case SIMPLE_HASH('p', 'l'):
/* operator + */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "+", 1));
case SIMPLE_HASH('p', 'L'):
/* operator += */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "+=", 2));
case SIMPLE_HASH('p', 'm'):
/* operator ->* */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "->*", 3));
case SIMPLE_HASH('p', 'p'):
/* operator ++ */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "++", 2));
case SIMPLE_HASH('p', 's'):
/* operator + (unary) */
ddata->cur += 2;
return (cpp_demangle_read_expression_unary(ddata, "+", 1));
case SIMPLE_HASH('p', 't'):
/* operator -> */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "->", 2));
case SIMPLE_HASH('q', 'u'):
/* operator ? */
ddata->cur += 2;
return (cpp_demangle_read_expression_trinary(ddata, "?", 1,
":", 1));
case SIMPLE_HASH('r', 'm'):
/* operator % */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "%", 1));
case SIMPLE_HASH('r', 'M'):
/* operator %= */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, "%=", 2));
case SIMPLE_HASH('r', 's'):
/* operator >> */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, ">>", 2));
case SIMPLE_HASH('r', 'S'):
/* operator >>= */
ddata->cur += 2;
return (cpp_demangle_read_expression_binary(ddata, ">>=", 3));
case SIMPLE_HASH('r', 'z'):
/* operator sizeof */
ddata->cur += 2;
return (cpp_demangle_read_expression_unary(ddata, "sizeof", 6));
case SIMPLE_HASH('s', 'v'):
/* operator sizeof */
ddata->cur += 2;
return (cpp_demangle_read_expression_unary(ddata, "sizeof", 6));
}
switch (*ddata->cur) {