| ... | ... | @@ -118,6 +118,20 @@ |
| 118 | 118 | function declContainsType(x){ |
| 119 | 119 | console.assert("value" in x); |
| 120 | 120 | |
| 121 | |
| 122 | } |
| 123 | |
| 124 | function typeShorthandName(type) { |
| 125 | var name = type.name; |
| 126 | if (type.kind === typeKinds.Struct) { |
| 127 | name = "struct"; |
| 128 | } else if (type.kind === typeKinds.Enum) { |
| 129 | name = "enum"; |
| 130 | } else if (type.kind === typeKinds.Union) { |
| 131 | name= "union"; |
| 132 | } |
| 133 | |
| 134 | return name |
| 121 | 135 | } |
| 122 | 136 | |
| 123 | 137 | function typeKindIsContainer(typeKind) { |
| ... | ... | @@ -169,7 +183,7 @@ |
| 169 | 183 | } |
| 170 | 184 | |
| 171 | 185 | if ("struct" in decl.value) { |
| 172 | | return resolveTypeRefToTypeId(decl.value.struct.typeRef); |
| 186 | return resolveTypeRefToTypeId(decl.value.struct.typeRef); |
| 173 | 187 | } |
| 174 | 188 | |
| 175 | 189 | console.log("TODO: handle in `resolveDeclValueTypeId` more cases: ", decl); |
| ... | ... | @@ -251,7 +265,7 @@ |
| 251 | 265 | |
| 252 | 266 | var childDeclValue = resolveValue(childDecl.value); |
| 253 | 267 | if ("type" in childDeclValue && |
| 254 | | zigAnalysis.types[childDeclValue.type].kind !== typeKinds.Fn){ |
| 268 | zigAnalysis.types[childDeclValue.type].kind !== typeKinds.Fn){ |
| 255 | 269 | if (i + 1 === curNav.declNames.length) { |
| 256 | 270 | curNav.declObjs.push(zigAnalysis.types[childDeclValue.type]); |
| 257 | 271 | break; |
| ... | ... | @@ -416,12 +430,29 @@ |
| 416 | 430 | } |
| 417 | 431 | var divDom = domListParams.children[domIndex]; |
| 418 | 432 | domIndex += 1; |
| 419 | | var value = resolveValue(typeObj.params[i]); |
| 420 | | console.assert("type" in value); |
| 421 | | var argTypeIndex = value.type; |
| 433 | |
| 434 | |
| 435 | var value = typeObj.params[i]; |
| 436 | var valueType = resolveValue(value); |
| 437 | console.assert("type" in valueType); |
| 438 | var argTypeIndex = valueType.type; |
| 422 | 439 | var html = '<pre>' + escapeHtml(fieldNode.name) + ": "; |
| 423 | 440 | if (isVarArgs && i === typeObj.params.length - 1) { |
| 424 | 441 | html += '...'; |
| 442 | } else if ("declRef" in value) { |
| 443 | var decl = zigAnalysis.decls[value.declRef]; |
| 444 | var val = resolveValue(decl.value); |
| 445 | var valType = zigAnalysis.types[argTypeIndex]; |
| 446 | |
| 447 | var valTypeName = typeShorthandName(valType); |
| 448 | |
| 449 | html += '<a href="'+navLinkDecl(decl.name)+'">'; |
| 450 | html += '<span class="tok-kw" style="color:lightblue;">' + decl.name + '</span>'; |
| 451 | html += '</a>'; |
| 452 | html += ' ('+ valTypeName +')'; |
| 453 | } else if ("type" in value) { |
| 454 | var name = zigAnalysis.types[value.type].name; |
| 455 | html += '<span class="tok-kw">' + name + '</span>'; |
| 425 | 456 | } else if (argTypeIndex != null) { |
| 426 | 457 | html += typeIndexName(argTypeIndex, true, true); |
| 427 | 458 | } else { |
| ... | ... | @@ -558,12 +589,12 @@ |
| 558 | 589 | var callName = declNamesCopy.pop(); |
| 559 | 590 | |
| 560 | 591 | callName += '('; |
| 561 | | for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { |
| 562 | | if (arg_i !== 0) callName += ','; |
| 563 | | var argObj = callObj.args[arg_i]; |
| 564 | | callName += getValueText(argObj.type, argObj.value, false, false); |
| 565 | | } |
| 566 | | callName += ')'; |
| 592 | for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { |
| 593 | if (arg_i !== 0) callName += ','; |
| 594 | var argObj = callObj.args[arg_i]; |
| 595 | callName += getValueText(argObj.type, argObj.value, false, false); |
| 596 | } |
| 597 | callName += ')'; |
| 567 | 598 | |
| 568 | 599 | declNamesCopy.push(callName); |
| 569 | 600 | return navLink(curNav.pkgNames, declNamesCopy); |
| ... | ... | @@ -633,15 +664,15 @@ |
| 633 | 664 | |
| 634 | 665 | // TODO make these links work |
| 635 | 666 | //var html = '<a href="' + navLinkCall(callObj) + '">' + escapeHtml(fnDecl.name) + '</a>('; |
| 636 | | var html = escapeHtml(fnDecl.name) + '('; |
| 637 | | for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { |
| 638 | | if (arg_i !== 0) html += ', '; |
| 639 | | var argObj = callObj.args[arg_i]; |
| 640 | | html += getValueText(argObj.type, argObj.value, true, true); |
| 667 | var html = escapeHtml(fnDecl.name) + '('; |
| 668 | for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { |
| 669 | if (arg_i !== 0) html += ', '; |
| 670 | var argObj = callObj.args[arg_i]; |
| 671 | html += getValueText(argObj.type, argObj.value, true, true); |
| 672 | } |
| 673 | html += ')'; |
| 674 | return html; |
| 641 | 675 | } |
| 642 | | html += ')'; |
| 643 | | return html; |
| 644 | | } |
| 645 | 676 | |
| 646 | 677 | function getValueText(typeIndex, value, wantHtml, wantLink) { |
| 647 | 678 | var typeObj = zigAnalysis.types[typeIndex]; |
| ... | ... | @@ -677,7 +708,7 @@ |
| 677 | 708 | case typeKinds.Optional: |
| 678 | 709 | return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl); |
| 679 | 710 | case typeKinds.Pointer: |
| 680 | | var name = ""; |
| 711 | var name = ""; |
| 681 | 712 | switch (typeObj.len) { |
| 682 | 713 | case pointerSizeEnum.One: |
| 683 | 714 | default: |
| ... | ... | @@ -832,72 +863,86 @@ |
| 832 | 863 | payloadHtml += 'fn' |
| 833 | 864 | } |
| 834 | 865 | payloadHtml += '('; |
| 835 | | if (typeObj.params) { |
| 836 | | var fields = null; |
| 837 | | var isVarArgs = false; |
| 838 | | var fnNode = zigAnalysis.astNodes[fnDecl.src]; |
| 839 | | fields = fnNode.fields; |
| 840 | | isVarArgs = fnNode.varArgs; |
| 841 | | |
| 842 | | for (var i = 0; i < typeObj.params.length; i += 1) { |
| 843 | | if (i != 0) { |
| 844 | | payloadHtml += ', '; |
| 845 | | } |
| 866 | if (typeObj.params) { |
| 867 | var fields = null; |
| 868 | var isVarArgs = false; |
| 869 | var fnNode = zigAnalysis.astNodes[fnDecl.src]; |
| 870 | fields = fnNode.fields; |
| 871 | isVarArgs = fnNode.varArgs; |
| 872 | |
| 873 | for (var i = 0; i < typeObj.params.length; i += 1) { |
| 874 | if (i != 0) { |
| 875 | payloadHtml += ', '; |
| 876 | } |
| 877 | var value = typeObj.params[i]; |
| 878 | var paramValue = resolveValue(value); |
| 879 | console.assert("type" in paramValue); |
| 880 | var argTypeIndex = paramValue.type; |
| 846 | 881 | |
| 847 | | var paramValue = resolveValue(typeObj.params[i]); |
| 848 | | console.assert("type" in paramValue); |
| 849 | | var argTypeIndex = paramValue.type; |
| 850 | 882 | |
| 851 | | if (fields != null) { |
| 852 | | var paramNode = zigAnalysis.astNodes[fields[i]]; |
| 883 | if (fields != null) { |
| 884 | var paramNode = zigAnalysis.astNodes[fields[i]]; |
| 853 | 885 | |
| 854 | | if (paramNode.varArgs) { |
| 855 | | payloadHtml += '...'; |
| 856 | | continue; |
| 857 | | } |
| 886 | if (paramNode.varArgs) { |
| 887 | payloadHtml += '...'; |
| 888 | continue; |
| 889 | } |
| 858 | 890 | |
| 859 | | if (paramNode.noalias) { |
| 860 | | if (wantHtml) { |
| 861 | | payloadHtml += '<span class="tok-kw">noalias</span> '; |
| 862 | | } else { |
| 863 | | payloadHtml += 'noalias '; |
| 891 | if (paramNode.noalias) { |
| 892 | if (wantHtml) { |
| 893 | payloadHtml += '<span class="tok-kw">noalias</span> '; |
| 894 | } else { |
| 895 | payloadHtml += 'noalias '; |
| 896 | } |
| 864 | 897 | } |
| 865 | | } |
| 866 | 898 | |
| 867 | | if (paramNode.comptime) { |
| 868 | | if (wantHtml) { |
| 869 | | payloadHtml += '<span class="tok-kw">comptime</span> '; |
| 870 | | } else { |
| 871 | | payloadHtml += 'comptime '; |
| 899 | if (paramNode.comptime) { |
| 900 | if (wantHtml) { |
| 901 | payloadHtml += '<span class="tok-kw">comptime</span> '; |
| 902 | } else { |
| 903 | payloadHtml += 'comptime '; |
| 904 | } |
| 872 | 905 | } |
| 873 | | } |
| 874 | 906 | |
| 875 | | var paramName = paramNode.name; |
| 876 | | if (paramName != null) { |
| 877 | | // skip if it matches the type name |
| 878 | | if (argTypeIndex == null || !shouldSkipParamName(argTypeIndex, paramName)) { |
| 879 | | payloadHtml += paramName + ': '; |
| 907 | var paramName = paramNode.name; |
| 908 | if (paramName != null) { |
| 909 | // skip if it matches the type name |
| 910 | if (argTypeIndex == null || !shouldSkipParamName(argTypeIndex, paramName)) { |
| 911 | payloadHtml += paramName + ': '; |
| 912 | } |
| 880 | 913 | } |
| 881 | 914 | } |
| 882 | | } |
| 883 | 915 | |
| 884 | | if (isVarArgs && i === typeObj.args.length - 1) { |
| 885 | | payloadHtml += '...'; |
| 886 | | } else if (argTypeIndex != null) { |
| 887 | | payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink); |
| 888 | | } else if (wantHtml) { |
| 889 | | payloadHtml += '<span class="tok-kw">var</span>'; |
| 890 | | } else { |
| 891 | | payloadHtml += 'var'; |
| 916 | if (isVarArgs && i === typeObj.args.length - 1) { |
| 917 | payloadHtml += '...'; |
| 918 | } else if ("declRef" in value) { |
| 919 | var decl = zigAnalysis.decls[value.declRef]; |
| 920 | var val = resolveValue(decl.value); |
| 921 | var valType = zigAnalysis.types[argTypeIndex]; |
| 922 | |
| 923 | var valTypeName = typeShorthandName(valType); |
| 924 | |
| 925 | payloadHtml += '<a href="'+navLinkDecl(decl.name)+'">'; |
| 926 | payloadHtml += '<span class="tok-kw" style="color:lightblue;">' + decl.name + '</span>'; |
| 927 | payloadHtml += '</a>'; |
| 928 | } else if ("type" in value) { |
| 929 | var name = zigAnalysis.types[value.type].name; |
| 930 | payloadHtml += '<span class="tok-kw">' + name + '</span>'; |
| 931 | } else if (argTypeIndex != null) { |
| 932 | payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink); |
| 933 | } else if (wantHtml) { |
| 934 | payloadHtml += '<span class="tok-kw">var</span>'; |
| 935 | } else { |
| 936 | payloadHtml += 'var'; |
| 937 | } |
| 892 | 938 | } |
| 893 | 939 | } |
| 894 | | } |
| 895 | 940 | |
| 896 | | var retValue = resolveValue(typeObj.ret); |
| 897 | | console.assert("type" in retValue); |
| 898 | | var retTypeIndex = retValue.type; |
| 941 | var retValue = resolveValue(typeObj.ret); |
| 942 | console.assert("type" in retValue); |
| 943 | var retTypeIndex = retValue.type; |
| 899 | 944 | |
| 900 | | payloadHtml += ') '; |
| 945 | payloadHtml += ') '; |
| 901 | 946 | if (retTypeIndex != null) { |
| 902 | 947 | payloadHtml += typeIndexName(retTypeIndex, wantHtml, wantSubLink, fnDecl); |
| 903 | 948 | } else if (wantHtml) { |
| ... | ... | @@ -1015,14 +1060,14 @@ |
| 1015 | 1060 | var next = typeObj.pubDecls[declI]; |
| 1016 | 1061 | if (prev === next) continue; |
| 1017 | 1062 | // TODO instead of showing "examples" as the public declarations, |
| 1018 | | // do logic like this: |
| 1063 | // do logic like this: |
| 1019 | 1064 | //if (typeof(prev) !== 'object') { |
| 1020 | | // var newDeclId = zigAnalysis.decls.length; |
| 1021 | | // prev = clone(zigAnalysis.decls[prev]); |
| 1022 | | // prev.id = newDeclId; |
| 1023 | | // zigAnalysis.decls.push(prev); |
| 1024 | | // containerObj.pubDecls[declI] = prev; |
| 1025 | | //} |
| 1065 | // var newDeclId = zigAnalysis.decls.length; |
| 1066 | // prev = clone(zigAnalysis.decls[prev]); |
| 1067 | // prev.id = newDeclId; |
| 1068 | // zigAnalysis.decls.push(prev); |
| 1069 | // containerObj.pubDecls[declI] = prev; |
| 1070 | //} |
| 1026 | 1071 | //mergeDecls(prev, next, firstTypeObj, typeObj); |
| 1027 | 1072 | } |
| 1028 | 1073 | } |
| ... | ... | @@ -1067,10 +1112,10 @@ |
| 1067 | 1112 | switch(Object.keys(decl.value)[0]) { |
| 1068 | 1113 | case "int": |
| 1069 | 1114 | declValueText += decl.value.int.value; |
| 1070 | | break; |
| 1115 | break; |
| 1071 | 1116 | case "float": |
| 1072 | 1117 | declValueText += decl.value.float.value; |
| 1073 | | break; |
| 1118 | break; |
| 1074 | 1119 | default: |
| 1075 | 1120 | console.log("TODO: renderValue for ", Object.keys(decl.value)[0]); |
| 1076 | 1121 | declValueText += "#TODO#"; |
| ... | ... | @@ -1114,32 +1159,33 @@ |
| 1114 | 1159 | var declLen = container.pubDecls ? container.pubDecls.length : 0; |
| 1115 | 1160 | for (var i = 0; i < declLen; i += 1) { |
| 1116 | 1161 | var decl = zigAnalysis.decls[container.pubDecls[i]]; |
| 1117 | | var declTypeId = resolveDeclValueTypeId(decl); |
| 1162 | var declValue = resolveValue(decl.value); |
| 1118 | 1163 | |
| 1119 | 1164 | if (decl.kind === 'var') { |
| 1120 | 1165 | varsList.push(decl); |
| 1121 | 1166 | continue; |
| 1122 | | } else if (decl.kind === 'const') { |
| 1123 | | if (declTypeId === typeTypeId) { |
| 1124 | | if (typeIsErrSet(declTypeId)) { |
| 1167 | } |
| 1168 | |
| 1169 | if (decl.kind === 'const') { |
| 1170 | if (!("type" in declValue)){ |
| 1171 | valsList.push(decl); |
| 1172 | } else { |
| 1173 | var value = zigAnalysis.types[declValue.type]; |
| 1174 | var kind = value.kind; |
| 1175 | if (kind === typeKinds.Fn) { |
| 1176 | //if (allCompTimeFnCallsHaveTypeResult(decl.type, declTypeId)) { |
| 1177 | // typesList.push(decl); |
| 1178 | //} else { |
| 1179 | fnsList.push(decl); |
| 1180 | // } |
| 1181 | |
| 1182 | } else if (typeIsErrSet(declValue.type)) { |
| 1125 | 1183 | errSetsList.push(decl); |
| 1126 | | } else if (typeIsStructWithNoFields(declTypeId)) { |
| 1184 | } else if (typeIsStructWithNoFields(declValue.type)) { |
| 1127 | 1185 | namespacesList.push(decl); |
| 1128 | 1186 | } else { |
| 1129 | 1187 | typesList.push(decl); |
| 1130 | 1188 | } |
| 1131 | | } else { |
| 1132 | | var typeKind = zigAnalysis.types[declTypeId].kind; |
| 1133 | | if (typeKind === typeKinds.Fn) { |
| 1134 | | // TODO: this is broken but I don't understand functions yet |
| 1135 | | if (allCompTimeFnCallsHaveTypeResult(decl.type, declTypeId)) { |
| 1136 | | typesList.push(decl); |
| 1137 | | } else { |
| 1138 | | fnsList.push(decl); |
| 1139 | | } |
| 1140 | | } else { |
| 1141 | | valsList.push(decl); |
| 1142 | | } |
| 1143 | 1189 | } |
| 1144 | 1190 | } |
| 1145 | 1191 | } |
| ... | ... | @@ -1202,7 +1248,10 @@ |
| 1202 | 1248 | var tdFnCode = trDom.children[0]; |
| 1203 | 1249 | var tdDesc = trDom.children[1]; |
| 1204 | 1250 | |
| 1205 | | tdFnCode.innerHTML = typeIndexName(decl.type, true, true, decl, navLinkDecl(decl.name)); |
| 1251 | var declType = resolveValue(decl.value); |
| 1252 | console.assert("type" in declType); |
| 1253 | |
| 1254 | tdFnCode.innerHTML = typeIndexName(declType.type, true, true, decl, navLinkDecl(decl.name)); |
| 1206 | 1255 | |
| 1207 | 1256 | var docs = zigAnalysis.astNodes[decl.src].docs; |
| 1208 | 1257 | if (docs != null) { |
| ... | ... | @@ -1238,11 +1287,7 @@ |
| 1238 | 1287 | console.assert("type" in val); |
| 1239 | 1288 | var valType = zigAnalysis.types[val.type]; |
| 1240 | 1289 | |
| 1241 | | var valTypeName = valType.name; |
| 1242 | | if (valType.kind === typeKinds.Struct) { |
| 1243 | | valTypeName = "struct"; |
| 1244 | | } |
| 1245 | | |
| 1290 | var valTypeName = typeShorthandName(valType); |
| 1246 | 1291 | html += '<a href="'+navLinkDecl(decl.name)+'">'; |
| 1247 | 1292 | html += '<span class="tok-kw" style="color:lightblue;">' + decl.name + '</span>'; |
| 1248 | 1293 | html += '</a>'; |
| ... | ... | @@ -1430,12 +1475,12 @@ |
| 1430 | 1475 | function computeCanonicalPackagePaths() { |
| 1431 | 1476 | var list = new Array(zigAnalysis.packages.length); |
| 1432 | 1477 | // Now we try to find all the packages from root. |
| 1433 | | var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg]; |
| 1478 | var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg]; |
| 1434 | 1479 | // Breadth-first to keep the path shortest possible. |
| 1435 | | var stack = [{ |
| 1436 | | path: [], |
| 1437 | | pkg: rootPkg, |
| 1438 | | }]; |
| 1480 | var stack = [{ |
| 1481 | path: [], |
| 1482 | pkg: rootPkg, |
| 1483 | }]; |
| 1439 | 1484 | while (stack.length !== 0) { |
| 1440 | 1485 | var item = stack.shift(); |
| 1441 | 1486 | for (var key in item.pkg.table) { |
| ... | ... | @@ -1534,7 +1579,7 @@ |
| 1534 | 1579 | |
| 1535 | 1580 | // PHASE 1: |
| 1536 | 1581 | // Dissect lines and determine the type for each line. |
| 1537 | | // Also computes indentation level and removes unnecessary whitespace |
| 1582 | // Also computes indentation level and removes unnecessary whitespace |
| 1538 | 1583 | |
| 1539 | 1584 | var is_reading_code = false; |
| 1540 | 1585 | var code_indent = 0; |
| ... | ... | @@ -1613,20 +1658,20 @@ |
| 1613 | 1658 | |
| 1614 | 1659 | // PHASE 2: |
| 1615 | 1660 | // Render HTML from markdown lines. |
| 1616 | | // Look at each line and emit fitting HTML code |
| 1661 | // Look at each line and emit fitting HTML code |
| 1617 | 1662 | |
| 1618 | 1663 | function markdownInlines(innerText, stopChar) { |
| 1619 | 1664 | |
| 1620 | 1665 | // inline types: |
| 1621 | 1666 | // **{INLINE}** : <strong> |
| 1622 | | // __{INLINE}__ : <u> |
| 1623 | | // ~~{INLINE}~~ : <s> |
| 1624 | | // *{INLINE}* : <emph> |
| 1625 | | // _{INLINE}_ : <emph> |
| 1626 | | // `{TEXT}` : <code> |
| 1627 | | // [{INLINE}]({URL}) : <a> |
| 1628 | | //  : <img> |
| 1629 | | // [[std;format.fmt]] : <a> (inner link) |
| 1667 | // __{INLINE}__ : <u> |
| 1668 | // ~~{INLINE}~~ : <s> |
| 1669 | // *{INLINE}* : <emph> |
| 1670 | // _{INLINE}_ : <emph> |
| 1671 | // `{TEXT}` : <code> |
| 1672 | // [{INLINE}]({URL}) : <a> |
| 1673 | //  : <img> |
| 1674 | // [[std;format.fmt]] : <a> (inner link) |
| 1630 | 1675 | |
| 1631 | 1676 | const formats = [ |
| 1632 | 1677 | { |
| ... | ... | @@ -1668,9 +1713,9 @@ |
| 1668 | 1713 | if (parsing_code && in_code) { |
| 1669 | 1714 | if (innerText.substr(i, codetag.length) == codetag) { |
| 1670 | 1715 | // remove leading and trailing whitespace if string both starts and ends with one. |
| 1671 | | if (currentRun[0] == " " && currentRun[currentRun.length - 1] == " ") { |
| 1672 | | currentRun = currentRun.substr(1, currentRun.length - 2); |
| 1673 | | } |
| 1716 | if (currentRun[0] == " " && currentRun[currentRun.length - 1] == " ") { |
| 1717 | currentRun = currentRun.substr(1, currentRun.length - 2); |
| 1718 | } |
| 1674 | 1719 | flushRun(); |
| 1675 | 1720 | i += codetag.length - 1; |
| 1676 | 1721 | in_code = false; |
| ... | ... | @@ -1935,7 +1980,7 @@ |
| 1935 | 1980 | startAsyncSearch(); |
| 1936 | 1981 | break; |
| 1937 | 1982 | case "?": |
| 1938 | | ev.preventDefault(); |
| 1983 | ev.preventDefault(); |
| 1939 | 1984 | ev.stopPropagation(); |
| 1940 | 1985 | showHelpModal(); |
| 1941 | 1986 | break; |
| ... | ... | @@ -2054,60 +2099,60 @@ |
| 2054 | 2099 | } |
| 2055 | 2100 | } |
| 2056 | 2101 | |
| 2057 | | function renderSearchCursor() { |
| 2058 | | for (var i = 0; i < domListSearchResults.children.length; i += 1) { |
| 2059 | | var liDom = domListSearchResults.children[i]; |
| 2060 | | if (curSearchIndex === i) { |
| 2061 | | liDom.classList.add("selected"); |
| 2062 | | } else { |
| 2063 | | liDom.classList.remove("selected"); |
| 2064 | | } |
| 2102 | function renderSearchCursor() { |
| 2103 | for (var i = 0; i < domListSearchResults.children.length; i += 1) { |
| 2104 | var liDom = domListSearchResults.children[i]; |
| 2105 | if (curSearchIndex === i) { |
| 2106 | liDom.classList.add("selected"); |
| 2107 | } else { |
| 2108 | liDom.classList.remove("selected"); |
| 2065 | 2109 | } |
| 2066 | 2110 | } |
| 2111 | } |
| 2067 | 2112 | |
| 2068 | | function indexNodesToFns() { |
| 2069 | | var map = {}; |
| 2070 | | for (var i = 0; i < zigAnalysis.fns.length; i += 1) { |
| 2071 | | var fn = zigAnalysis.fns[i]; |
| 2072 | | if (typeIsGenericFn(fn.type)) continue; |
| 2073 | | if (map[fn.src] == null) { |
| 2074 | | map[fn.src] = [i]; |
| 2075 | | } else { |
| 2076 | | map[fn.src].push(i); |
| 2077 | | } |
| 2113 | function indexNodesToFns() { |
| 2114 | var map = {}; |
| 2115 | for (var i = 0; i < zigAnalysis.fns.length; i += 1) { |
| 2116 | var fn = zigAnalysis.fns[i]; |
| 2117 | if (typeIsGenericFn(fn.type)) continue; |
| 2118 | if (map[fn.src] == null) { |
| 2119 | map[fn.src] = [i]; |
| 2120 | } else { |
| 2121 | map[fn.src].push(i); |
| 2078 | 2122 | } |
| 2079 | | return map; |
| 2080 | 2123 | } |
| 2124 | return map; |
| 2125 | } |
| 2081 | 2126 | |
| 2082 | | function indexNodesToCalls() { |
| 2083 | | var map = {}; |
| 2084 | | for (var i = 0; i < zigAnalysis.calls.length; i += 1) { |
| 2085 | | var call = zigAnalysis.calls[i]; |
| 2086 | | var fn = zigAnalysis.fns[call.fn]; |
| 2087 | | if (map[fn.src] == null) { |
| 2088 | | map[fn.src] = [i]; |
| 2089 | | } else { |
| 2090 | | map[fn.src].push(i); |
| 2091 | | } |
| 2127 | function indexNodesToCalls() { |
| 2128 | var map = {}; |
| 2129 | for (var i = 0; i < zigAnalysis.calls.length; i += 1) { |
| 2130 | var call = zigAnalysis.calls[i]; |
| 2131 | var fn = zigAnalysis.fns[call.fn]; |
| 2132 | if (map[fn.src] == null) { |
| 2133 | map[fn.src] = [i]; |
| 2134 | } else { |
| 2135 | map[fn.src].push(i); |
| 2092 | 2136 | } |
| 2093 | | return map; |
| 2094 | 2137 | } |
| 2138 | return map; |
| 2139 | } |
| 2095 | 2140 | |
| 2096 | | function byNameProperty(a, b) { |
| 2097 | | return operatorCompare(a.name, b.name); |
| 2098 | | } |
| 2141 | function byNameProperty(a, b) { |
| 2142 | return operatorCompare(a.name, b.name); |
| 2143 | } |
| 2099 | 2144 | |
| 2100 | | function clone(obj) { |
| 2101 | | var res = {}; |
| 2102 | | for (var key in obj) { |
| 2103 | | res[key] = obj[key]; |
| 2104 | | } |
| 2105 | | return res; |
| 2145 | function clone(obj) { |
| 2146 | var res = {}; |
| 2147 | for (var key in obj) { |
| 2148 | res[key] = obj[key]; |
| 2106 | 2149 | } |
| 2150 | return res; |
| 2151 | } |
| 2107 | 2152 | |
| 2108 | | function firstObjectKey(obj) { |
| 2109 | | for (var key in obj) { |
| 2110 | | return key; |
| 2111 | | } |
| 2153 | function firstObjectKey(obj) { |
| 2154 | for (var key in obj) { |
| 2155 | return key; |
| 2112 | 2156 | } |
| 2157 | } |
| 2113 | 2158 | })(); |