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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 17854x 17854x 17854x 17854x 17854x 17854x 17854x 17854x 2935629x 2935629x 1x 1x 2935628x 2935628x 17853x 17853x 1x 1x 1467x 1467x 1x 1x 550x 550x 1x 1x 8x 8x 180x 180x 8x 8x 8x 1x 1x 462x 462x 1x 1x 8x 8x 8x 8x 1x 1x 26x 26x 1x 1x 1x | import {AbstractType} from "./_abstract_type"; export interface IStructureComponent { name: string; type: AbstractType; asInclude?: boolean; suffix?: string; } export class StructureType extends AbstractType { private readonly indexed: {[index: string]: AbstractType}; private readonly components: IStructureComponent[]; public constructor(components: IStructureComponent[], qualifiedName?: string, ddicName?: string) { super({ qualifiedName: qualifiedName, ddicName: ddicName, }); if (components.length === 0) { throw new Error("Structure does not contain any components"); } this.indexed = {}; for (const c of components) { const upper = c.name.toUpperCase(); if (this.indexed[upper] !== undefined) { throw new Error("Structure, duplicate field name \"" + upper + "\", " + qualifiedName); } this.indexed[upper] = c.type; } this.components = components; } public getComponents(): IStructureComponent[] { return this.components; } public getComponentByName(name: string): AbstractType | undefined { return this.indexed[name.toUpperCase()]; } public toText(level: number) { const compo: string[] = []; for (const c of this.components) { compo.push(c.name + " TYPE " + c.type.toText(level + 1)); } const spaces = " ".repeat(level); return "Structure\n" + spaces + "* " + compo.join("\n" + spaces + "* "); } public isGeneric() { return false; } public toABAP(): string { const ret = this.getQualifiedName(); if (ret) { return ret; } return "StructureTypetoABAPtodo"; } public containsVoid() { return this.getComponents().some(c => { return c.type.containsVoid(); }); } public toCDS() { return "abap.TODO_STRUCTURE"; } } |