(func)
| 894 | Module['stringToUTF32'] = stringToUTF32; |
| 895 | |
| 896 | function demangle(func) { |
| 897 | var i = 3; |
| 898 | // params, etc. |
| 899 | var basicTypes = { |
| 900 | 'v': 'void', |
| 901 | 'b': 'bool', |
| 902 | 'c': 'char', |
| 903 | 's': 'short', |
| 904 | 'i': 'int', |
| 905 | 'l': 'long', |
| 906 | 'f': 'float', |
| 907 | 'd': 'double', |
| 908 | 'w': 'wchar_t', |
| 909 | 'a': 'signed char', |
| 910 | 'h': 'unsigned char', |
| 911 | 't': 'unsigned short', |
| 912 | 'j': 'unsigned int', |
| 913 | 'm': 'unsigned long', |
| 914 | 'x': 'long long', |
| 915 | 'y': 'unsigned long long', |
| 916 | 'z': '...' |
| 917 | }; |
| 918 | var subs = []; |
| 919 | var first = true; |
| 920 | function dump(x) { |
| 921 | //return; |
| 922 | if (x) Module.print(x); |
| 923 | Module.print(func); |
| 924 | var pre = ''; |
| 925 | for (var a = 0; a < i; a++) pre += ' '; |
| 926 | Module.print (pre + '^'); |
| 927 | } |
| 928 | function parseNested() { |
| 929 | i++; |
| 930 | if (func[i] === 'K') i++; // ignore const |
| 931 | var parts = []; |
| 932 | while (func[i] !== 'E') { |
| 933 | if (func[i] === 'S') { // substitution |
| 934 | i++; |
| 935 | var next = func.indexOf('_', i); |
| 936 | var num = func.substring(i, next) || 0; |
| 937 | parts.push(subs[num] || '?'); |
| 938 | i = next+1; |
| 939 | continue; |
| 940 | } |
| 941 | if (func[i] === 'C') { // constructor |
| 942 | parts.push(parts[parts.length-1]); |
| 943 | i += 2; |
| 944 | continue; |
| 945 | } |
| 946 | var size = parseInt(func.substr(i)); |
| 947 | var pre = size.toString().length; |
| 948 | if (!size || !pre) { i--; break; } // counter i++ below us |
| 949 | var curr = func.substr(i + pre, size); |
| 950 | parts.push(curr); |
| 951 | subs.push(curr); |
| 952 | i += pre + size; |
| 953 | } |
no test coverage detected