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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 10374x 10374x 10374x 10374x 10374x 10374x 10374x 10374x 10374x 1665837x 1665837x 1x 1x 1665836x 1665836x 10373x 10373x 1x 1x 1693x 1693x 1x 1x 613x 613x 1x 1x 9x 9x 183x 183x 9x 9x 9x 1x 1x 537x 537x 1x 1x 12x 12x 12x 12x 1x 1x 31x 31x 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, description?: string) { super({ qualifiedName: qualifiedName, ddicName: ddicName, description: description, }); 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"; } } |