OpenVDB  8.0.1
PointExecutable.h
Go to the documentation of this file.
1 // Copyright Contributors to the OpenVDB Project
2 // SPDX-License-Identifier: MPL-2.0
3 
11 
12 #ifndef OPENVDB_AX_COMPILER_POINT_EXECUTABLE_HAS_BEEN_INCLUDED
13 #define OPENVDB_AX_COMPILER_POINT_EXECUTABLE_HAS_BEEN_INCLUDED
14 
15 #include "CustomData.h"
16 #include "AttributeRegistry.h"
17 
18 #include <openvdb/openvdb.h>
19 #include <openvdb/version.h>
21 
22 #include <unordered_map>
23 
24 class TestPointExecutable;
25 
26 namespace llvm {
27 class ExecutionEngine;
28 class LLVMContext;
29 }
30 
31 namespace openvdb {
33 namespace OPENVDB_VERSION_NAME {
34 namespace ax {
35 
36 class Compiler;
37 
40 {
41 public:
42  using Ptr = std::shared_ptr<PointExecutable>;
44 
49 
51 
53  void execute(points::PointDataGrid& grid) const;
54 
56 
63  void setGroupExecution(const std::string& name);
66  const std::string& getGroupExecution() const;
67 
73  void setCreateMissing(const bool flag);
75  bool getCreateMissing() const;
76 
80  void setGrainSize(const size_t grain);
82  size_t getGrainSize() const;
83 
85 
86  // foward declaration of settings for this executable
87  struct Settings;
88 
89 private:
90  friend class Compiler;
91  friend class ::TestPointExecutable;
92 
104  PointExecutable(const std::shared_ptr<const llvm::LLVMContext>& context,
105  const std::shared_ptr<const llvm::ExecutionEngine>& engine,
106  const AttributeRegistry::ConstPtr& attributeRegistry,
107  const CustomData::ConstPtr& customData,
108  const std::unordered_map<std::string, uint64_t>& functions);
109 
110 private:
111  // The Context and ExecutionEngine must exist _only_ for object lifetime
112  // management. The ExecutionEngine must be destroyed before the Context
113  const std::shared_ptr<const llvm::LLVMContext> mContext;
114  const std::shared_ptr<const llvm::ExecutionEngine> mExecutionEngine;
115  const AttributeRegistry::ConstPtr mAttributeRegistry;
116  const CustomData::ConstPtr mCustomData;
117  const std::unordered_map<std::string, uint64_t> mFunctionAddresses;
118  std::unique_ptr<Settings> mSettings;
119 };
120 
121 } // namespace ax
122 } // namespace OPENVDB_VERSION_NAME
123 } // namespace openvdb
124 
125 #endif // OPENVDB_AX_COMPILER_POINT_EXECUTABLE_HAS_BEEN_INCLUDED
126 
llvm
Definition: Compiler.h:31
openvdb::v8_0::ax::PointExecutable::Ptr
std::shared_ptr< PointExecutable > Ptr
Definition: PointExecutable.h:42
CustomData.h
Access to the CustomData class which can provide custom user user data to the OpenVDB AX Compiler.
version.h
Library and file format version numbers.
openvdb::v8_0::ax::PointExecutable::PointExecutable
PointExecutable(const PointExecutable &other)
Copy constructor. Shares the LLVM constructs but deep copies the settings. Multiple copies of an exec...
PointDataGrid.h
Attribute-owned data structure for points. Point attributes are stored in leaf nodes and ordered by v...
openvdb::v8_0::ax::PointExecutable::getGrainSize
size_t getGrainSize() const
openvdb::v8_0::ax::PointExecutable::getCreateMissing
bool getCreateMissing() const
openvdb::v8_0::ax::PointExecutable
Object that encapsulates compiled AX code which can be executed on a target point grid.
Definition: PointExecutable.h:40
openvdb::v8_0::ax::PointExecutable::setCreateMissing
void setCreateMissing(const bool flag)
Set the behaviour when missing point attributes are accessed. Default behaviour is true,...
openvdb::v8_0::ax::PointExecutable::~PointExecutable
~PointExecutable()
openvdb::v8_0::ax::CustomData::ConstPtr
std::shared_ptr< const CustomData > ConstPtr
Definition: CustomData.h:47
OPENVDB_USE_VERSION_NAMESPACE
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:153
OPENVDB_VERSION_NAME
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:101
openvdb::v8_0::ax::AttributeRegistry::ConstPtr
std::shared_ptr< const AttributeRegistry > ConstPtr
Definition: AttributeRegistry.h:40
AttributeRegistry.h
These classes contain lists of expected attributes and volumes which are populated by compiler during...
openvdb::v8_0::ax::PointExecutable::getGroupExecution
const std::string & getGroupExecution() const
openvdb
Definition: openvdb/Exceptions.h:13
openvdb::v8_0::ax::PointExecutable::execute
void execute(points::PointDataGrid &grid) const
executes compiled AX code on target grid
openvdb::v8_0::ax::PointExecutable::setGrainSize
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.
openvdb::v8_0::ax::Compiler
The compiler class. This holds an llvm context and set of compiler options, and constructs executable...
Definition: Compiler.h:50
openvdb::v8_0::Grid
Container class that associates a tree with a transform and metadata.
Definition: Grid.h:577
openvdb.h
openvdb::v8_0::ax::PointExecutable::setGroupExecution
void setGroupExecution(const std::string &name)
Set a specific point group to execute over. The default is none, which corresponds to all points....