MCPcopy Index your code
hub / github.com/jvilk/BrowserFS / parse

Function parse

test/tests/emscripten/readdir_empty.js:1061–1131  ·  view source on GitHub ↗
(rawList, limit, allowVoid)

Source from the content-addressed store, hash-verified

1059 return parts;
1060 }
1061 function parse(rawList, limit, allowVoid) { // main parser
1062 limit = limit || Infinity;
1063 var ret = '', list = [];
1064 function flushList() {
1065 return '(' + list.join(', ') + ')';
1066 }
1067 var name;
1068 if (func[i] === 'N') {
1069 // namespaced N-E
1070 name = parseNested().join('::');
1071 limit--;
1072 if (limit === 0) return rawList ? [name] : name;
1073 } else {
1074 // not namespaced
1075 if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L'
1076 var size = parseInt(func.substr(i));
1077 if (size) {
1078 var pre = size.toString().length;
1079 name = func.substr(i + pre, size);
1080 i += pre + size;
1081 }
1082 }
1083 first = false;
1084 if (func[i] === 'I') {
1085 i++;
1086 var iList = parse(true);
1087 var iRet = parse(true, 1, true);
1088 ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>';
1089 } else {
1090 ret = name;
1091 }
1092 paramLoop: while (i < func.length && limit-- > 0) {
1093 //dump('paramLoop');
1094 var c = func[i++];
1095 if (c in basicTypes) {
1096 list.push(basicTypes[c]);
1097 } else {
1098 switch (c) {
1099 case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer
1100 case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference
1101 case 'L': { // literal
1102 i++; // skip basic type
1103 var end = func.indexOf('E', i);
1104 var size = end - i;
1105 list.push(func.substr(i, size));
1106 i += size + 2; // size + 'EE'
1107 break;
1108 }
1109 case 'A': { // array
1110 var size = parseInt(func.substr(i));
1111 i += size.toString().length;
1112 if (func[i] !== '_') throw '?';
1113 i++; // skip _
1114 list.push(parse(true, 1, true)[0] + ' [' + size + ']');
1115 break;
1116 }
1117 case 'E': break paramLoop;
1118 default: ret += '?' + c; break paramLoop;

Callers 1

demangleFunction · 0.70

Calls 3

toStringMethod · 0.80
parseNestedFunction · 0.70
flushListFunction · 0.70

Tested by

no test coverage detected