import { Field, Vardecl } from "@specs-feup/clava/api/Joinpoints.js"; export interface StructDeclFlattener { validate(decl: Vardecl): boolean; decompose(decl: Vardecl, fields: Field[]): [string, Vardecl][]; } /** * Decomposes struct initializations that are done by direct list assignment, * of AST structure like: * >vardecl * ->initList * -->intLiteral * -->floatLiteral * -->literal * Examples: * Data dataInit1 = {102, 98.9, "Sample Data 1"} * Data dataInit2 = {.id = 103, .value = 97.9, .name = "Sample Data 2"} * Data dataInit3 = {.value = 96.9, .id = 104, .name = "Sample Data 3"} * Data dataInit4 = {5} * Data dataInit5 = {.id = 105} */ export declare class DirectListDecl implements StructDeclFlattener { validate(decl: Vardecl): boolean; decompose(decl: Vardecl, fields: Field[]): [string, Vardecl][]; } /** * Decomposes struct initializations that are done by assigning a list to a pointer, * of AST structure like: * >vardecl * ->unaryOp {kind: addr_of} * -->literal * --->initList * ---->intLiteral * ---->implicitValue * ---->implicitValue * Examples: * Data *dataInit6 = &(Data){106, 95.9, "Sample Data 6"} * Data *dataInit7 = &(Data){.id = 107, .value = 94.9, .name = "Sample Data 7"} * Data *dataInit8 = &(Data){.value = 93.9, .id = 108, .name = "Sample Data 8"} * Data *dataInit9 = &(Data){109} * Data *dataInit10 = &(Data){.id = 110} */ export declare class PointerListDecl implements StructDeclFlattener { validate(decl: Vardecl): boolean; decompose(decl: Vardecl, fields: Field[]): [string, Vardecl][]; } /** * Decomposes struct initializations that are done by assigning a list to a pointer, * of AST structure like: * >vardecl * ->cast * -->call {fun: malloc} * --->varref {name: malloc} {type: functionType} * --->unaryExprOrType * or * >vardecl * ->call {fun: malloc} * -->varref {name: malloc} {type: functionType} * -->unaryExprOrType * Examples: * Data *dataInit12 = malloc(sizeof(Data)) * Data *dataInit13 = (Data *) malloc(sizeof(Data)) * Data *dataInit15 = (Data *) calloc(1, sizeof(Data)) * */ export declare class MallocDecl implements StructDeclFlattener { validate(decl: Vardecl): boolean; decompose(decl: Vardecl, fields: Field[]): [string, Vardecl][]; } export declare class StructToStructDecl implements StructDeclFlattener { validate(decl: Vardecl): boolean; decompose(decl: Vardecl, fields: Field[]): [string, Vardecl][]; } export declare class ArrayOfStructsDecl implements StructDeclFlattener { validate(decl: Vardecl): boolean; decompose(decl: Vardecl, fields: Field[]): [string, Vardecl][]; } //# sourceMappingURL=StructDeclFlattener.d.ts.map