Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1436x 1436x 1436x 1x 1x 4616x 2304x 1560x 3872x 1x 1x 301x 301x 301x 301x 1x 1x 1x 1x 272x 272x 79x 79x 79x 272x 1x 1x 1436x 1436x 272x 272x 1164x 1164x 1436x 1164x 1164x 1436x 47x 47x 47x 1164x 1164x 1436x 11x 11x 11x 1164x 1164x 1436x 513x 513x 513x 1164x 1x 1x | import {MethodDefinition} from "./method_definition"; import {StructureNode} from "../nodes"; import * as Structures from "../3_structures/structures"; import {MethodDef} from "../2_statements/statements"; import {Visibility} from "../4_file_information/visibility"; import {IMethodDefinitions} from "./_method_definitions"; import {IMethodDefinition} from "./_method_definition"; import {SyntaxInput} from "../5_syntax/_syntax_input"; export class MethodDefinitions implements IMethodDefinitions { private readonly all: {[index: string]: IMethodDefinition} = {}; public constructor(node: StructureNode, input: SyntaxInput) { this.all = {}; this.parse(node, input); } public* getAll(): Generator<IMethodDefinition, void, undefined> { for (const a in this.all) { yield this.all[a]; } } public getByName(name: string | undefined): IMethodDefinition | undefined { if (name === undefined) { return undefined; } return this.all[name.toUpperCase()]; } /////////////////////// private parseInterface(node: StructureNode, input: SyntaxInput) { const defs = node.findAllStatements(MethodDef); for (const def of defs) { const m = new MethodDefinition(def, Visibility.Public, input); this.all[m.getName().toUpperCase()] = m; } } private parse(node: StructureNode, input: SyntaxInput) { const idef = node.findDirectStructure(Structures.Interface); if (idef) { return this.parseInterface(node, input); } const cdef = node.findDirectStructure(Structures.ClassDefinition); if (!cdef) { throw new Error("MethodDefinitions, expected ClassDefinition as part of input node"); } const pri = cdef.findDirectStructure(Structures.PrivateSection); for (const def of pri?.findAllStatements(MethodDef) || []) { const m = new MethodDefinition(def, Visibility.Private, input); this.all[m.getName().toUpperCase()] = m; } const pro = node.findDirectStructure(Structures.ProtectedSection); for (const def of pro?.findAllStatements(MethodDef) || []) { const m = new MethodDefinition(def, Visibility.Protected, input); this.all[m.getName().toUpperCase()] = m; } const pub = node.findDirectStructure(Structures.PublicSection); for (const def of pub?.findAllStatements(MethodDef) || []) { const m = new MethodDefinition(def, Visibility.Public, input); this.all[m.getName().toUpperCase()] = m; } } } |