OpenVDB: PointExecutable.h Source File

OpenVDB 8.0.0

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>
20 #include <openvdb/points/PointDataGrid.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 {
32 OPENVDB_USE_VERSION_NAMESPACE
33 namespace OPENVDB_VERSION_NAME {
34 namespace ax {
35
36 class Compiler;
37
39 class PointExecutable
40 {
41 public:
42 using Ptr = std::shared_ptr<PointExecutable>;
43 ~PointExecutable();
44
48 PointExecutable(const PointExecutable& other);
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
openvdb::v8_2::ax::CustomData::ConstPtr
std::shared_ptr< const CustomData > ConstPtr
Definition: CustomData.h:47
openvdb::v8_2::ax::PointExecutable::execute
void execute(points::PointDataGrid &grid) const
executes compiled AX code on target grid
openvdb::v8_2::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.
llvm
Definition: Compiler.h:31
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_2::ax::PointExecutable::Ptr
std::shared_ptr< PointExecutable > Ptr
Definition: PointExecutable.h:42
openvdb::v8_2::ax::PointExecutable::getCreateMissing
bool getCreateMissing() const
openvdb::v8_2::ax::PointExecutable
Object that encapsulates compiled AX code which can be executed on a target point grid.
Definition: PointExecutable.h:40
PointDataGrid.h
Attribute-owned data structure for points. Point attributes are stored in leaf nodes and ordered by v...
openvdb::v8_2::ax::PointExecutable::setCreateMissing
void setCreateMissing(const bool flag)
Set the behaviour when missing point attributes are accessed. Default behaviour is true,...
openvdb::v8_2::ax::PointExecutable::~PointExecutable
~PointExecutable()
openvdb::v8_2::ax::Compiler
The compiler class. This holds an llvm context and set of compiler options, and constructs executable...
Definition: Compiler.h:50
openvdb::v8_2::ax::PointExecutable::PointExecutable
PointExecutable(const PointExecutable &other)
Copy constructor. Shares the LLVM constructs but deep copies the settings. Multiple copies of an exec...
openvdb::v8_2::ax::PointExecutable::getGrainSize
size_t getGrainSize() const
OPENVDB_USE_VERSION_NAMESPACE
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:153
openvdb::v8_2::ax::PointExecutable::getGroupExecution
const std::string & getGroupExecution() const
OPENVDB_VERSION_NAME
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:101
openvdb::v8_2::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....
AttributeRegistry.h
These classes contain lists of expected attributes and volumes which are populated by compiler during...
openvdb
Definition: openvdb/Exceptions.h:13
openvdb::v8_2::ax::AttributeRegistry::ConstPtr
std::shared_ptr< const AttributeRegistry > ConstPtr
Definition: AttributeRegistry.h:40
openvdb::v8_2::Grid
Container class that associates a tree with a transform and metadata.
Definition: Grid.h:577
openvdb.h