File indexing completed on 2026-04-17 07:46:21
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Geometry/GeometryModule.h"
0012 #include "Acts/Geometry/TrackingGeometry.hpp"
0013
0014 #include <memory>
0015
0016 namespace Acts::detail {
0017 using BuildFunction = std::unique_ptr<TrackingGeometry> (*)(const Logger&);
0018 const ActsGeometryModuleV1* getGeometryModule(const char* module_abi_tag,
0019 const char* user_data_type,
0020 BuildFunction buildFunc);
0021
0022
0023 const ActsGeometryModuleV1* getGeometryModuleFromRaw(
0024 const char* module_abi_tag, const char* user_data_type,
0025 void* (*buildFunc)(const void*, const void*));
0026 }
0027
0028
0029 #define ACTS_IMPL_GEOMETRY_MODULE_ENTRY(get_module_expr) \
0030 extern "C" const ActsGeometryModuleV1* acts_geometry_module_v1(void) { \
0031 return (get_module_expr); \
0032 }
0033
0034
0035
0036 #ifdef ACTS_GEOMETRY_MODULE_ABI_TAG
0037 #define ACTS_DEFINE_GEOMETRY_MODULE(build_function) \
0038 ACTS_IMPL_GEOMETRY_MODULE_ENTRY(Acts::detail::getGeometryModule( \
0039 ACTS_GEOMETRY_MODULE_ABI_TAG, nullptr, (build_function)))
0040 #else
0041 #define ACTS_DEFINE_GEOMETRY_MODULE(build_function) \
0042 static_assert(false, \
0043 "ACTS_GEOMETRY_MODULE_ABI_TAG must be provided via " \
0044 "CMake (use acts_add_geometry_module).")
0045 #endif