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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import {Identifier} from "./_identifier";
import {Visibility} from "./visibility";
// Only helper functions to get data from single file, no type information
export enum AttributeLevel {
Instance = "instance",
Static = "static",
Constant = "constant",
}
export enum MethodParameterDirection {
Importing = "importing",
Exporting = "exporting",
Changing = "changing",
Returning = "returning",
}
export interface InfoAttribute {
name: string,
identifier: Identifier,
level: AttributeLevel,
readOnly: boolean,
visibility: Visibility,
}
export interface InfoMethodParameter {
name: string,
identifier: Identifier,
direction: MethodParameterDirection,
}
export interface InfoMethodDefinition {
name: string,
identifier: Identifier,
// todo, level, Instance or Static
isRedefinition: boolean,
isEventHandler: boolean,
isForTesting: boolean,
isAbstract: boolean,
isFinal: boolean,
visibility: Visibility,
parameters: InfoMethodParameter[],
exceptions: string[],
}
export interface InfoInterfaceDefinition {
name: string,
identifier: Identifier;
isLocal: boolean;
isGlobal: boolean;
interfaces: readonly InfoImplementing[];
methods: readonly InfoMethodDefinition[];
aliases: readonly InfoAlias[],
constants: readonly InfoConstant[],
// todo, constants
// todo, types
attributes: readonly InfoAttribute[];
}
export interface InfoConstant {
identifier: Identifier;
name: string,
typeName: string,
visibility: Visibility,
value: string
}
export interface InfoAlias {
name: string,
identifier: Identifier;
visibility: Visibility,
component: string
}
export interface InfoImplementing {
name: string,
partial: boolean,
allAbstract: boolean,
abstractMethods: string[],
finalMethods: string[],
}
export enum Duration {
short = "SHORT",
medium = "MEDIUM",
long = "LONG",
}
export enum RiskLevel {
harmless = "HARMLESS",
critical = "CRITICAL",
dangerous = "DANGEROUS",
}
export interface InfoClassDefinition extends InfoInterfaceDefinition {
superClassName: string | undefined;
isAbstract: boolean;
isFinal: boolean;
interfaces: readonly InfoImplementing[];
isForTesting: boolean;
duration: Duration | undefined,
riskLevel: RiskLevel | undefined,
isSharedMemory: boolean;
}
export interface InfoClassImplementation {
name: string,
identifier: Identifier;
methods: readonly Identifier[];
}
export interface InfoFormDefinition {
name: string,
identifier: Identifier;
}
export interface IABAPFileInformation {
listInterfaceDefinitions(): readonly InfoInterfaceDefinition[];
getInterfaceDefinitionByName(name: string): InfoInterfaceDefinition | undefined;
listClassDefinitions(): readonly InfoClassDefinition[];
getClassDefinitionByName(name: string): InfoClassDefinition | undefined;
listFormDefinitions(): readonly InfoFormDefinition[];
listClassImplementations(): readonly InfoClassImplementation[];
getClassImplementationByName(name: string): InfoClassImplementation | undefined;
} |