#include "ffi_extra.h" #include #include #include #include #include std::unique_ptr get_transform_parameter_map(itk::simple::ElastixImageFilter& tfilter, const unsigned int index) { itk::simple::ElastixImageFilter::ParameterMapType parameter_map = tfilter.GetTransformParameterMap(index); ParameterMap transform_parameter_map = ParameterMap(parameter_map); auto ptr = std::make_unique(parameter_map); return ptr; } std::unique_ptr get_default_parameter_map(const std::string& kind) { itk::simple::ElastixImageFilter::ParameterMapType parameter_map = itk::simple::GetDefaultParameterMap(kind); ParameterMap default_parameter_map = ParameterMap(parameter_map); auto ptr = std::make_unique(default_parameter_map); return ptr; } void set_parameter_map(itk::simple::ElastixImageFilter& tfilter, const std::unique_ptr& parameter_map) { tfilter.SetParameterMap(parameter_map->parameters); }; ParameterMap::ParameterMap() = default; ParameterMap::~ParameterMap() = default; ParameterMap::ParameterMap(itk::simple::ElastixImageFilter::ParameterMapType parameter_map) { this->parameters = std::move(parameter_map); } std::unique_ptr new_parameter_map() { ParameterMap parameter_map; auto ptr = std::make_unique(parameter_map); return ptr; } void ParameterMap::insert(const std::string &key, const std::vector &value) { this->parameters.emplace(key, value); } std::unique_ptr> ParameterMap::keys() const { std::vector keys; for (auto &[key, value] : this->parameters) { keys.push_back(key); } auto ptr = std::make_unique>(keys); return ptr; } std::unique_ptr> ParameterMap::get(const std::string& key) const { std::vector value = this->parameters.at(key); auto ptr = std::make_unique>(value); return ptr; }