15#ifndef OPENVDB_AX_COMPILER_HAS_BEEN_INCLUDED
16#define OPENVDB_AX_COMPILER_HAS_BEEN_INCLUDED
25#include <openvdb/version.h>
43class FunctionRegistry;
53 using Ptr = std::shared_ptr<Compiler>;
77 template <
typename ExecutableT>
78 typename ExecutableT::Ptr
93 template <
typename ExecutableT>
94 typename ExecutableT::Ptr
101 if (syntaxTree)
return compile<ExecutableT>(*syntaxTree, logger, data);
113 template <
typename ExecutableT>
114 typename ExecutableT::Ptr
118 std::vector<std::string> errors;
119 openvdb::ax::Logger logger(
120 [&errors] (
const std::string& error) {
121 errors.emplace_back(error +
"\n");
124 [] (
const std::string&) {}
127 typename ExecutableT::Ptr exe;
129 exe = this->compile<ExecutableT>(*syntaxTree, logger, data);
131 if (!errors.empty()) {
132 std::ostringstream os;
133 for (
const auto& e : errors) os << e <<
"\n";
146 template <
typename ExecutableT>
147 typename ExecutableT::Ptr
151 std::vector<std::string> errors;
152 openvdb::ax::Logger logger(
153 [&errors] (
const std::string& error) {
154 errors.emplace_back(error +
"\n");
157 [] (
const std::string&) {}
159 auto exe = compile<ExecutableT>(syntaxTree, logger, data);
160 if (!errors.empty()) {
161 std::ostringstream os;
162 for (
const auto& e : errors) os << e <<
"\n";
180 template <
typename ExeT,
typename GenT>
183 const std::string& moduleName,
184 const std::vector<std::string>& functions,
189 std::shared_ptr<llvm::LLVMContext> mContext;
191 std::shared_ptr<codegen::FunctionRegistry> mFunctionRegistry;
OpenVDB AX Compiler Options.
Access to the CustomData class which can provide custom user user data to the OpenVDB AX Compiler.
Logging system to collect errors and warnings throughout the different stages of parsing and compilat...
Parsing methods for creating abstract syntax trees out of AX code.
Single header include which provides methods for initializing AX and running a full AX pipeline (pars...
Definition: Exceptions.h:37
The compiler class. This holds an llvm context and set of compiler options, and constructs executable...
Definition: Compiler.h:50
std::shared_ptr< Compiler > Ptr
Definition: Compiler.h:53
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.
Definition: Compiler.h:95
std::unique_ptr< Compiler > UniquePtr
Definition: Compiler.h:54
void setFunctionRegistry(std::unique_ptr< codegen::FunctionRegistry > &&functionRegistry)
Sets the compiler's function registry object.
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.
Definition: Compiler.h:115
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.
Definition: Compiler.h:148
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.
Compiler(const CompilerOptions &options=CompilerOptions())
Construct a compiler object with given settings.
static UniquePtr create(const CompilerOptions &options=CompilerOptions())
Static method for creating Compiler objects.
std::shared_ptr< CustomData > Ptr
Definition: CustomData.h:37
Logger for collecting errors and warnings that occur during AX compilation.
Definition: Logger.h:55
void clear()
Clear the tree-code mapping and reset the number of errors/warnings.
Definition: Compiler.h:31
openvdb::ax::ast::Tree::Ptr parse(const char *code)
Construct an abstract syntax tree from a code snippet. A runtime exception will be thrown with the fi...
Definition: Exceptions.h:13
#define OPENVDB_THROW(exception, message)
Definition: Exceptions.h:74
Settings which control how a Compiler class object behaves.
Definition: CompilerOptions.h:48
A Tree is the highest concrete (non-abstract) node in the entire AX AST hierarchy....
Definition: AST.h:562
std::shared_ptr< const Tree > ConstPtr
Definition: AST.h:564
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h.in:116
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h.in:202