// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include "IndexerFactory.h" #ifdef JFJOCH_USE_CUDA #include "FFBIDXIndexer.h" #include "FFTIndexerGPU.h" #endif #ifdef JFJOCH_USE_FFTW #include "FFTIndexerCPU.h" #endif std::unique_ptr CreateIndexer(const DiffractionExperiment& experiment) { std::unique_ptr indexer; switch (experiment.GetIndexingAlgorithm()) { case IndexingAlgorithmEnum::FFBIDX: #ifdef JFJOCH_USE_CUDA indexer = std::make_unique(); indexer->Setup(experiment); #endif break; case IndexingAlgorithmEnum::FFTW: #ifdef JFJOCH_USE_FFTW indexer = std::make_unique(experiment.GetIndexingSettings()); indexer->Setup(experiment); #endif break; case IndexingAlgorithmEnum::FFT: #ifdef JFJOCH_USE_CUDA indexer = std::make_unique(experiment.GetIndexingSettings()); indexer->Setup(experiment); #endif break; default: break; } return indexer; }