TargetCode
A collection of all code from the input file that needs to be copied to the target source file.
#include <TargetCode.h>
Public Functions
Name | |
---|---|
TargetCode(clang::Rewriter & TargetCodeRewriter) | |
bool | addCodeFragment(std::shared_ptr< TargetCodeFragment > Frag, bool PushFront =false) Add a piece of code from the input file to this collection. |
bool | addCodeFragmentFront(std::shared_ptr< TargetCodeFragment > Fag) See addCodeFragment. |
void | generateCode(llvm::raw_ostream & Out) Generate target code from all fragments and system headers added to this collection. |
TargetCodeFragmentDeque::const_iterator | getCodeFragmentsBegin() Get an iterate over all code fragments in this collection. |
TargetCodeFragmentDeque::const_iterator | getCodeFragmentsEnd() See getCodeFragmentsBegin. |
void | addHeader(const std::string & Header) Add a header file to be included by the target code. |
Private Functions
Name | |
---|---|
void | generateVariableDecl(const TargetRegionVariable & Var, llvm::raw_ostream & Out) Generate the variable declaration of a transferred variable. |
void | generateFunctionPrologue(TargetCodeRegion * TCR, llvm::raw_ostream & Out) Generates a function prologue for a target region. |
void | generateFunctionEpilogue(TargetCodeRegion * TCR, llvm::raw_ostream & Out) Generates a function epilogue for a target region. |
std::string | generateFunctionName(TargetCodeRegion * TCR) Generate a function name for a target region. |
void | generateArgument(const TargetRegionVariable & Aarg, llvm::raw_ostream & Out) Generate function arguments. |
Private Attributes
Name | |
---|---|
TargetCodeFragmentDeque | CodeFragments Collection of all code locations that need to be copied. |
std::set< std::string > | SystemHeaders Header files which will also be present on the target. |
clang::Rewriter & | TargetCodeRewriter |
clang::SourceManager & | SM |
Public Functions Documentation
function TargetCode
1 2 3 |
|
function addCodeFragment
1 2 3 4 |
|
Add a piece of code from the input file to this collection.
Parameters:
- Frag Target code fragment to add
- PushFront Whether to push it to the front or the back
Adds a code fragment.
This function uses the fragments source location to check wether it was already added and where in the list of code fragments to add it.
Adds a TargetCodeFragment to Target Code
function addCodeFragmentFront
1 2 3 |
|
See addCodeFragment.
function generateCode
1 2 3 |
|
Generate target code from all fragments and system headers added to this collection.
Parameters:
- Out Out stream
Generate target code.
Generates the actual target code
function getCodeFragmentsBegin
1 |
|
Get an iterate over all code fragments in this collection.
function getCodeFragmentsEnd
1 |
|
function addHeader
1 2 3 |
|
Add a header file to be included by the target code.
Private Functions Documentation
function generateVariableDecl
1 2 3 4 |
|
Generate the variable declaration of a transferred variable.
Parameters:
- Var The variable for which to print the declaration
- Out The output stream to which to write the variable declaration
Generate the variable declaration (including setting the variable to the proper value) of a transferred variable and print it to the specified output stream.
function generateFunctionPrologue
1 2 3 4 |
|
Generates a function prologue for a target region.
Parameters:
- TCR Code region
- Out Out stream
Generate function prologue.
This prologue consists of a function declaration and code to copy local variables into scope.
Generates everything that comes before the actual target code, like the function head, local variables and helper functions.
function generateFunctionEpilogue
1 2 3 4 |
|
Generates a function epilogue for a target region.
Parameters:
- TCR Target code
- Out Out stream
Generate function epilogue.
This prologue consists of a code to copy variables from the local scope back.
Generates everything that comes after the actual target code, like '}' and scalar copies.
function generateFunctionName
1 2 3 |
|
Generate a function name for a target region.
Parameters:
- TCR Target code region
Return: std::string Function name
Generates function name.
function generateArgument
1 2 3 4 |
|
Generate function arguments.
Parameters:
- Arg Argument
- Out Out stream
Generates the argument list for the target function.
Private Attributes Documentation
variable CodeFragments
1 |
|
Collection of all code locations that need to be copied.
variable SystemHeaders
1 |
|
Header files which will also be present on the target.
Instead of copying the code declarations in them, we can simply add #include directives for these headers to the target code.
variable TargetCodeRewriter
1 |
|
variable SM
1 |
|