#include #include #include #include static char *(*demanglers[])(char*, char*) = { demanglegcc2, demanglegcc3, }; char* demangle(char *s, char *buf, int strip) { char *t; char *r, *w; int i, nangle, nparen; t = nil; for(i=0; i and () - not right, but convenient */ /* convert :: to $ - not right, but convenient (should fix acid) */ nangle = 0; nparen = 0; for(r=w=buf; *r; r++){ switch(*r){ case '<': nangle++; break; case '>': nangle--; break; case '(': nparen++; break; case ')': nparen--; break; default: if(nparen == 0 && nangle == 0) *w++ = *r; break; } } *w = 0; return buf; } #ifdef TEST void main(int argc, char **argv) { int i; for(i=1; i