12#ifndef OPENVDB_AX_COMPILER_POINT_EXECUTABLE_HAS_BEEN_INCLUDED
13#define OPENVDB_AX_COMPILER_POINT_EXECUTABLE_HAS_BEEN_INCLUDED
20#include <openvdb/version.h>
23#include <llvm/Config/llvm-config.h>
25#include <unordered_map>
27struct TestPointExecutableAcc;
81 using Ptr = std::shared_ptr<PointExecutable>;
162 static CLI create(
size_t argc,
const char* argv[],
bool* used=
nullptr);
163 static void usage(std::ostream& os,
const bool verbose);
167 std::unique_ptr<Settings<true>> mSettings;
178 friend struct ::TestPointExecutableAcc;
198#
if LLVM_VERSION_MAJOR <= 15
199 const std::shared_ptr<const llvm::LLVMContext>& context,
200 const std::shared_ptr<const llvm::ExecutionEngine>& engine,
202 const std::shared_ptr<const llvm::orc::LLJIT>& mExecutionEngine,
206 const std::unordered_map<std::string, uint64_t>& functions,
210#if LLVM_VERSION_MAJOR <= 15
213 const std::shared_ptr<const llvm::LLVMContext> mContext;
214 const std::shared_ptr<const llvm::ExecutionEngine> mExecutionEngine;
216 const std::shared_ptr<const llvm::orc::LLJIT> mExecutionEngine;
220 const std::unordered_map<std::string, uint64_t> mFunctionAddresses;
221 std::unique_ptr<Settings<false>> mSettings;
The Attribute Bindings class is used by the compiled Executables to handle the mapping of AX Attribut...
These classes contain lists of expected attributes and volumes which are populated by compiler during...
Access to the CustomData class which can provide custom user user data to the OpenVDB AX Compiler.
Attribute-owned data structure for points. Point attributes are stored in leaf nodes and ordered by v...
This class wraps an interface for a map of attribute bindings. These map attributes in AX code to con...
Definition AttributeBindings.h:37
std::shared_ptr< const AttributeRegistry > ConstPtr
Definition AttributeRegistry.h:43
std::shared_ptr< const CustomData > ConstPtr
Definition CustomData.h:38
const std::string & getGroupExecution() const
void setCreateMissing(const bool flag)
Set the behaviour when missing point attributes are accessed. Default behaviour is true,...
const AttributeBindings & getAttributeBindings() const
std::shared_ptr< PointExecutable > Ptr
Definition PointExecutable.h:81
void execute(points::PointDataGrid &grid) const
Run this point executable binary on a target PointDataGrid.
PointExecutable(const PointExecutable &other)
Copy constructor. Shares the LLVM constructs but deep copies the settings. Multiple copies of an exec...
friend class Compiler
Definition PointExecutable.h:177
void setGrainSize(const size_t grain)
Set the threading grain size. Default is 1. A value of 0 has the effect of disabling multi-threading.
void setGroupExecution(const std::string &name)
Set a specific point group to execute over. The default is none, which corresponds to all points....
size_t getGrainSize() const
void setSettingsFromCLI(const CLI &cli)
Intialize the Settings of this executables from the CLI object.
bool getCreateMissing() const
void setAttributeBindings(const AttributeBindings &bindings)
Set attribute bindings.
tree::Tree< tree::RootNode< tree::InternalNode< tree::InternalNode< PointDataLeafNode< PointDataIndex32, 3 >, 4 >, 5 > > > PointDataTree
Point index tree configured to match the default VDB configurations.
Definition PointDataGrid.h:190
Grid< PointDataTree > PointDataGrid
Point data grid.
Definition PointDataGrid.h:195
Definition PointDataGrid.h:170
Definition Exceptions.h:13
Command Line Interface handling for the PointExecutable.
Definition PointExecutable.h:158
static void usage(std::ostream &os, const bool verbose)
friend class PointExecutable
Definition PointExecutable.h:165
static CLI create(size_t argc, const char *argv[], bool *used=nullptr)
Definition PointExecutable.h:151
A Tree is the highest concrete (non-abstract) node in the entire AX AST hierarchy....
Definition AST.h:563
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition version.h.in:121
#define OPENVDB_USE_VERSION_NAMESPACE
Definition version.h.in:218