import { Statement, Vardecl, Varref } from "@specs-feup/clava/api/Joinpoints.js"; export declare abstract class StructRefFlattener { abstract validate(leftRef: Varref, rightRef: Varref): boolean; decompose(leftRef: Varref, rightRef: Varref, fieldDecls: [string, Vardecl][], isLeft: boolean): Statement[]; protected abstract decomposeField(leftRef: Varref, rightRef: Varref, fieldDecl: Vardecl, lhsVarName: string, rhsVarName: string, isLeft: boolean): Statement[]; } export declare class ScalarToScalarAssignment extends StructRefFlattener { validate(leftRef: Varref, rightRef: Varref): boolean; protected decomposeField(leftRef: Varref, rightRef: Varref, fieldDecl: Vardecl, lhsVarName: string, rhsVarName: string, isLeft: boolean): Statement[]; } export declare class ArrayToArrayAssignment extends StructRefFlattener { validate(leftRef: Varref, rightRef: Varref): boolean; protected decomposeField(leftRef: Varref, rightRef: Varref, fieldDecl: Vardecl, lhsVarName: string, rhsVarName: string, isLeft: boolean): Statement[]; } /** * foo = *bar */ export declare class PointerToScalarAssignment extends StructRefFlattener { validate(leftRef: Varref, rightRef: Varref): boolean; protected decomposeField(leftRef: Varref, rightRef: Varref, fieldDecl: Vardecl, lhsVarName: string, rhsVarName: string, isLeft: boolean): Statement[]; } export declare class PointerToPointerAssignment extends StructRefFlattener { validate(leftRef: Varref, rightRef: Varref): boolean; protected decomposeField(leftRef: Varref, rightRef: Varref, fieldDecl: Vardecl, lhsVarName: string, rhsVarName: string, isLeft: boolean): Statement[]; } /** * foo = &bar, where foo is a pointer and bar is not */ export declare class DerefToScalarAssignment extends StructRefFlattener { validate(leftRef: Varref, rightRef: Varref): boolean; protected decomposeField(leftRef: Varref, rightRef: Varref, fieldDecl: Vardecl, lhsVarName: string, rhsVarName: string, isLeft: boolean): Statement[]; } /** * foo[i] = bar, where foo is an array of structs and bar is a struct * This only works if the array is 1D */ export declare class StructToArrayPositionAssignment extends StructRefFlattener { validate(leftRef: Varref, rightRef: Varref): boolean; protected decomposeField(leftRef: Varref, rightRef: Varref, fieldDecl: Vardecl, lhsVarName: string, rhsVarName: string, isLeft: boolean): Statement[]; } //# sourceMappingURL=StructRefFlattener.d.ts.map