Loading...
Searching...
No Matches
Compiler Class Reference

The compiler class. This holds an llvm context and set of compiler options, and constructs executable objects (e.g. PointExecutable or VolumeExecutable) from a syntax tree or snippet of code. More...

`#include <openvdb_ax/compiler/Compiler.h>`

## Public Types

using | Ptr = std::shared_ptr<Compiler>
using | UniquePtr = std::unique_ptr<Compiler>

## Public Member Functions

| Compiler (const CompilerOptions &options=CompilerOptions())
| Construct a compiler object with given settings.
| ~Compiler ()=default
template<typename ExecutableT>
ExecutableT::Ptr | compile (const ast::Tree &syntaxTree, Logger &logger, const CustomData::Ptr data=CustomData::Ptr())
| Compile a given AST into an executable object of the given type.
template<typename ExecutableT>
ExecutableT::Ptr | compile (const std::string &code, Logger &logger, const CustomData::Ptr data=CustomData::Ptr())
| Compile a given snippet of AX code into an executable object of the given type.
template<typename ExecutableT>
ExecutableT::Ptr | compile (const std::string &code, const CustomData::Ptr data=CustomData::Ptr())
| Compile a given snippet of AX code into an executable object of the given type.
template<typename ExecutableT>
ExecutableT::Ptr | compile (const ast::Tree &syntaxTree, const CustomData::Ptr data=CustomData::Ptr())
| Compile a given AST into an executable object of the given type.
void | setFunctionRegistry (std::unique_ptr< codegen::FunctionRegistry > &&functionRegistry)
| Sets the compiler's function registry object.

## Static Public Member Functions

static UniquePtr | create (const CompilerOptions &options=CompilerOptions())
| Static method for creating Compiler objects.

## Detailed Description

The compiler class. This holds an llvm context and set of compiler options, and constructs executable objects (e.g. PointExecutable or VolumeExecutable) from a syntax tree or snippet of code.

## Member Typedef Documentation

## Ptr

using Ptr = std::shared_ptr<Compiler>

## UniquePtr

using UniquePtr = std::unique_ptr<Compiler>

## Constructor & Destructor Documentation

## Compiler()

Compiler | ( | const CompilerOptions & | options = CompilerOptions() | ) |

Construct a compiler object with given settings.

Parameters

  options | CompilerOptions object with various settings

## ~Compiler()

~Compiler | ( |  | ) |

default

## Member Function Documentation

## compile() [1/4]

template<typename ExecutableT>

ExecutableT::Ptr compile | ( | const ast::Tree & | syntaxTree,
|  | const CustomData::Ptr | data = CustomData::Ptr() )

inline

Compile a given AST into an executable object of the given type.

Parameters

  syntaxTree | An abstract syntax tree to compile
  data | Optional external/custom data which is to be referenced by the executable object. It allows one to reference data held elsewhere, such as inside of a DCC, from inside the AX code

Note
  Any errors encountered are collected into a single runtime error

## compile() [2/4]

template<typename ExecutableT>

ExecutableT::Ptr compile | ( | const ast::Tree & | syntaxTree,
|  | Logger & | logger,
|  | const CustomData::Ptr | data = CustomData::Ptr() )

Compile a given AST into an executable object of the given type.

Parameters

  syntaxTree | An abstract syntax tree to compile
  logger | Logger for errors and warnings during compilation, this should be linked to an ast::Tree and populated with AST node + line number mappings for this Tree, e.g. during ast::parse(). This Tree can be different from the syntaxTree argument.
  data | Optional external/custom data which is to be referenced by the executable object. It allows one to reference data held elsewhere, such as inside of a DCC, from inside the AX code

Note
  If the logger has not been populated with AST node and line mappings, all messages will appear without valid line and column numbers.

## compile() [3/4]

template<typename ExecutableT>

ExecutableT::Ptr compile | ( | const std::string & | code,
|  | const CustomData::Ptr | data = CustomData::Ptr() )

inline

Compile a given snippet of AX code into an executable object of the given type.

Parameters

  code | A string of AX code
  data | Optional external/custom data which is to be referenced by the executable object. It allows one to reference data held elsewhere, such as inside of a DCC, from inside the AX code

Note
  Parser errors are handled separately from compiler errors. Each are collected and produce runtime errors.

## compile() [4/4]

template<typename ExecutableT>

ExecutableT::Ptr compile | ( | const std::string & | code,
|  | Logger & | logger,
|  | const CustomData::Ptr | data = CustomData::Ptr() )

inline

Compile a given snippet of AX code into an executable object of the given type.

Parameters

  code | A string of AX code
  logger | Logger for errors and warnings during compilation, will be cleared of existing data
  data | Optional external/custom data which is to be referenced by the executable object. It allows one to reference data held elsewhere, such as inside of a DCC, from inside the AX code

Note
  If compilation is unsuccessful, will return nullptr. Logger can then be queried for errors.

## create()

UniquePtr create | ( | const CompilerOptions & | options = CompilerOptions() | ) |

static

Static method for creating Compiler objects.

## setFunctionRegistry()

void setFunctionRegistry | ( | std::unique_ptr< codegen::FunctionRegistry > && | functionRegistry | ) |

Sets the compiler's function registry object.

Parameters

  functionRegistry | A unique pointer to a FunctionRegistry object. The compiler will take ownership of the registry that was passed in.