12#ifndef OPENVDB_AX_CODEGEN_FUNCTION_REGISTRY_HAS_BEEN_INCLUDED
13#define OPENVDB_AX_CODEGEN_FUNCTION_REGISTRY_HAS_BEEN_INCLUDED
18#include "../compiler/CompilerOptions.h"
20#include <openvdb/version.h>
22#include <unordered_map>
40 using Ptr = std::shared_ptr<FunctionRegistry>;
41 using UniquePtr = std::unique_ptr<FunctionRegistry>;
53 : mConstructor(creator), mFunction(), mInternal(internal) {}
60 inline const FunctionGroup*
function()
const {
return mFunction.get(); }
71 using RegistryMap = std::unordered_map<std::string, RegisteredFunction>;
79 void insert(
const std::string& identifier,
81 const bool internal =
false);
93 const bool internal =
false);
104 const bool allowInternalAccess);
113 const bool allowInternalAccess)
const;
125 inline bool empty()
const {
return mMap.empty(); }
128 inline void clear() { mMap.clear(); }
Contains frameworks for creating custom AX functions which can be registered within the FunctionRegis...
Consolidated llvm types for most supported types.
The function registry which is used for function code generation. Each time a function is visited wit...
Definition: FunctionRegistry.h:37
std::shared_ptr< FunctionRegistry > Ptr
Definition: FunctionRegistry.h:40
FunctionGroup::UniquePtr(*)(const FunctionOptions &) ConstructorT
Definition: FunctionRegistry.h:39
const FunctionGroup * getOrInsert(const std::string &identifier, const FunctionOptions &op, const bool allowInternalAccess)
Return the corresponding function from a provided function identifier.
bool empty() const
Return whether or not the registry is empty.
Definition: FunctionRegistry.h:125
std::unordered_map< std::string, RegisteredFunction > RegistryMap
Definition: FunctionRegistry.h:71
const RegistryMap & map() const
Return a const reference to the current registry map.
Definition: FunctionRegistry.h:122
void createAll(const FunctionOptions &op, const bool verify=false)
Force the (re)creations of all function objects for all registered functions.
void insertAndCreate(const std::string &identifier, const ConstructorT creator, const FunctionOptions &op, const bool internal=false)
Insert and register a function object to a function identifier.
const FunctionGroup * get(const std::string &identifier, const bool allowInternalAccess) const
Return the corresponding function from a provided function identifier.
void insert(const std::string &identifier, const ConstructorT creator, const bool internal=false)
Insert and register a function object to a function identifier.
void clear()
Clear the underlying function registry.
Definition: FunctionRegistry.h:128
std::unique_ptr< FunctionRegistry > UniquePtr
Definition: FunctionRegistry.h:41
Definition: Exceptions.h:13
Options that control how functions behave.
Definition: CompilerOptions.h:25
todo
Definition: FunctionTypes.h:791
std::shared_ptr< FunctionGroup > Ptr
Definition: FunctionTypes.h:792
std::unique_ptr< FunctionGroup > UniquePtr
Definition: FunctionTypes.h:793
An object to represent a registered function, storing its constructor, a pointer to the function defi...
Definition: FunctionRegistry.h:48
RegisteredFunction(const ConstructorT &creator, const bool internal=false)
Constructor.
Definition: FunctionRegistry.h:52
void create(const FunctionOptions &op)
Create a function object using this creator of this function.
Definition: FunctionRegistry.h:57
bool isInternal() const
Check whether this function should be only internally accesible.
Definition: FunctionRegistry.h:63
#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