@specs-feup/clava
Version:
A C/C++ source-to-source compiler written in Typescript
52 lines • 1.82 kB
TypeScript
import BenchmarkInstance from "@specs-feup/lara/api/lara/benchmark/BenchmarkInstance.js";
import { JavaClasses } from "@specs-feup/lara/api/lara/util/JavaTypes.js";
import { Joinpoint } from "../../Joinpoints.js";
import CMaker from "../../clava/cmake/CMaker.js";
/**
* Instance of a Clava benchmark.
*
* Implements _compilePrivate and .getKernel().
*/
export default abstract class ClavaBenchmarkInstance extends BenchmarkInstance {
cmaker: CMaker | undefined;
cmakerProvider: () => CMaker;
constructor(name: string);
setCMakerProvider(cmakerProvider: () => CMaker): void;
/**
* The output folder for this BenchmarkInstance.
*/
private getOutputFolder;
protected compilationEngineProvider(name: string): CMaker;
/**
* Allows to customize the CMake options used during compilation.
*
* @param name
* @returns
*/
protected getCMaker(): CMaker;
protected compilePrivate(): JavaClasses.File | undefined;
/**
* Speciallized implementation for Clava that automatically saves and restores the AST, extending classes just need to implement addCode() and loadPrologue().
*/
protected loadPrivate(): void;
protected closePrivate(): void;
protected loadCached(astFile: JavaClasses.File): void;
/**
* Looks for #pragma kernel, returns target of that pragma
*/
getKernel(): Joinpoint;
/*** FUNCTIONS TO IMPLEMENT ***/
/**
* Configuration that is required by the benchmarks (e.g., setting the standard)
*/
protected abstract loadPrologue(): void;
/**
* Adds the code to the AST, can assume the AST is empty.
*/
protected abstract addCode(): void;
/**
*
*/
protected abstract closeEpilogue(): void;
}
//# sourceMappingURL=ClavaBenchmarkInstance.d.ts.map