| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // Copyright Contributors to the OpenVDB Project | ||
| 2 | // SPDX-License-Identifier: MPL-2.0 | ||
| 3 | |||
| 4 | /// @file codegen/Functions.h | ||
| 5 | /// | ||
| 6 | /// @authors Nick Avramoussis, Richard Jones, Francisco Gochez | ||
| 7 | /// | ||
| 8 | /// @brief Contains the function objects that define the functions used in | ||
| 9 | /// compute function generation, to be inserted into the FunctionRegistry. | ||
| 10 | /// These define general purpose functions such as math functions. | ||
| 11 | /// | ||
| 12 | |||
| 13 | #ifndef OPENVDB_AX_CODEGEN_GENERIC_FUNCTIONS_HAS_BEEN_INCLUDED | ||
| 14 | #define OPENVDB_AX_CODEGEN_GENERIC_FUNCTIONS_HAS_BEEN_INCLUDED | ||
| 15 | |||
| 16 | #include "FunctionRegistry.h" | ||
| 17 | |||
| 18 | #include "../compiler/CompilerOptions.h" | ||
| 19 | |||
| 20 | #include <openvdb/version.h> | ||
| 21 | |||
| 22 | namespace openvdb { | ||
| 23 | OPENVDB_USE_VERSION_NAMESPACE | ||
| 24 | namespace OPENVDB_VERSION_NAME { | ||
| 25 | |||
| 26 | namespace ax { | ||
| 27 | namespace codegen { | ||
| 28 | |||
| 29 | /// @brief Creates a registry with the default set of registered functions | ||
| 30 | /// including math functions, point functions and volume functions | ||
| 31 | /// @param op The current function options | ||
| 32 | /// | ||
| 33 | inline FunctionRegistry::UniquePtr createDefaultRegistry(const FunctionOptions* op = nullptr); | ||
| 34 | |||
| 35 | /// @brief Populates a function registry with all available "standard" AX | ||
| 36 | /// library function. This primarily consists of all mathematical ops | ||
| 37 | /// on AX containers (scalars, vectors, matrices) and other stl built-ins | ||
| 38 | /// @param reg The function registry to populate | ||
| 39 | /// @param options The current function options | ||
| 40 | /// | ||
| 41 | OPENVDB_AX_API void insertStandardFunctions(FunctionRegistry& reg, const FunctionOptions* options = nullptr); | ||
| 42 | |||
| 43 | /// @brief Populates a function registry with all available OpenVDB Point AX | ||
| 44 | /// library function | ||
| 45 | /// @param reg The function registry to populate | ||
| 46 | /// @param options The current function options | ||
| 47 | /// | ||
| 48 | OPENVDB_AX_API void insertVDBPointFunctions(FunctionRegistry& reg, const FunctionOptions* options = nullptr); | ||
| 49 | |||
| 50 | /// @brief Populates a function registry with all available OpenVDB Volume AX | ||
| 51 | /// library function | ||
| 52 | /// @param reg The function registry to populate | ||
| 53 | /// @param options The current function options | ||
| 54 | /// | ||
| 55 | OPENVDB_AX_API void insertVDBVolumeFunctions(FunctionRegistry& reg, const FunctionOptions* options = nullptr); | ||
| 56 | |||
| 57 | |||
| 58 | /////////////////////////////////////////////////////////////////////////// | ||
| 59 | /////////////////////////////////////////////////////////////////////////// | ||
| 60 | |||
| 61 | |||
| 62 | 1486 | inline FunctionRegistry::UniquePtr createDefaultRegistry(const FunctionOptions* op) | |
| 63 | { | ||
| 64 | 1486 | FunctionRegistry::UniquePtr registry(new FunctionRegistry); | |
| 65 |
1/2✓ Branch 1 taken 1486 times.
✗ Branch 2 not taken.
|
1486 | insertStandardFunctions(*registry, op); |
| 66 |
1/2✓ Branch 1 taken 1486 times.
✗ Branch 2 not taken.
|
1486 | insertVDBPointFunctions(*registry, op); |
| 67 |
1/2✓ Branch 1 taken 1486 times.
✗ Branch 2 not taken.
|
1486 | insertVDBVolumeFunctions(*registry, op); |
| 68 | 1486 | return registry; | |
| 69 | } | ||
| 70 | |||
| 71 | } // namespace codegen | ||
| 72 | } // namespace ax | ||
| 73 | } // namespace OPENVDB_VERSION_NAME | ||
| 74 | } // namespace openvdb | ||
| 75 | |||
| 76 | #endif // OPENVDB_AX_CODEGEN_GENERIC_FUNCTIONS_HAS_BEEN_INCLUDED | ||
| 77 | |||
| 78 |