(mangle)
| 100 | |
| 101 | // demangle the function name, don't care about the template or the argument |
| 102 | function demangleFunctionName(mangle) { |
| 103 | if (! mangle) return mangle; |
| 104 | if (mangle[0] !== '_') return mangle; |
| 105 | if (mangle[1] === 'M' && mangle[2] === '/') return mangle.slice(3); |
| 106 | if (mangle[1] !== 'Z') return mangle; |
| 107 | mangle = mangle.slice(2); |
| 108 | var result; |
| 109 | var last = ""; |
| 110 | var scoped = false; |
| 111 | do { |
| 112 | if (!result) |
| 113 | result = ""; |
| 114 | else |
| 115 | result += "::"; |
| 116 | if (mangle[0]==='D') { |
| 117 | result += "~" + last; |
| 118 | break; |
| 119 | } |
| 120 | if (mangle[0]==='C') { |
| 121 | result += last; |
| 122 | break; |
| 123 | } |
| 124 | if (mangle[0]==='N') { |
| 125 | mangle = mangle.slice(1); |
| 126 | scoped = true; |
| 127 | } |
| 128 | if (mangle[0]==='K') mangle = mangle.slice(1); |
| 129 | if (mangle[0]==='L') mangle = mangle.slice(1); |
| 130 | if (mangle.match(/^St/)) { //St |
| 131 | mangle = mangle.slice(2); |
| 132 | result += "std::"; |
| 133 | } |
| 134 | if (mangle[0]==='I') { |
| 135 | var n = 1; |
| 136 | var i; |
| 137 | for (i = 1; i < mangle.length && n > 0 ;i++) { |
| 138 | if (mangle[i] === 'I') n++; |
| 139 | if (mangle[i] === 'E') n--; |
| 140 | } |
| 141 | mangle = mangle.slice(i); |
| 142 | } |
| 143 | if (mangle.match(/^[a-z]/)) { |
| 144 | result += "operator"; |
| 145 | break; |
| 146 | } |
| 147 | var len = parseInt(mangle); |
| 148 | if (!len) return null; |
| 149 | var start = ("" + len).length; |
| 150 | last = mangle.substr(start, len); |
| 151 | result += last; |
| 152 | mangle = mangle.slice(start + len) |
| 153 | } while(mangle && mangle[0]!='E' && mangle[0]!='B' && scoped); |
| 154 | return result; |
| 155 | } |
| 156 | |
| 157 | // ident and highlight code (for macros) |
| 158 | function identAndHighlightMacro(origin) { |
no outgoing calls
no test coverage detected