18#ifndef elxConversion_h
19#define elxConversion_h
63 static constexpr const char *
66 return arg ?
"true" :
"false";
82 static std::string_view
104 template <
typename TInteger>
108 static_assert(std::is_integral_v<TInteger>,
"An integer type expected!");
109 static_assert(!std::is_same_v<TInteger, bool>,
"No bool expected!");
110 return std::to_string(integerValue);
122 template <
typename TContainer,
typename SFINAE =
typename TContainer::iterator>
123 static std::vector<std::string>
126 std::vector<std::string> result;
128 result.reserve(container.size());
130 for (
const auto element : container)
140 template <
typename T,
unsigned int NRows,
unsigned int NColumns>
141 static std::vector<std::string>
144 std::vector<std::string> result;
145 result.reserve(NColumns * NRows);
147 for (
unsigned column{}; column < NColumns; ++column)
149 for (
unsigned row{}; row < NRows; ++row)
159 template <
typename TValue>
160 static std::vector<TValue>
163 vector1.insert(end(vector1), std::make_move_iterator(begin(vector2)), std::make_move_iterator(end(vector2)));
185 template <
typename T>
190 static_assert(!std::is_same_v<T, bool>,
"This StringToValue<T> overload does not support bool!");
194 static_assert(
sizeof(T) > 1,
"This StringToValue<T> overload does not support (signed/unsigned) char!");
196 if (std::is_unsigned_v<T> && (!str.empty()) && (str.front() ==
'-'))
202 auto inputStream = [&str] {
203 const auto decimalPointPos = str.find_first_of(
'.');
204 const bool hasDecimalPointAndTrailingZeros =
205 (decimalPointPos != std::string::npos) &&
206 (
static_cast<std::uintmax_t
>(std::count(str.cbegin() + decimalPointPos + 1, str.cend(),
'0')) ==
207 (str.size() - decimalPointPos - 1));
208 return std::istringstream(
209 hasDecimalPointAndTrailingZeros ? std::string(str.cbegin(), str.cbegin() + decimalPointPos) : str);
213 return (inputStream >> value) && inputStream.eof();
A class that contains utility functions for the conversion of number of seconds and parameter values ...
static std::string ToString(float)
static std::vector< TValue > ConcatenateVectors(std::vector< TValue > vector1, std::vector< TValue > vector2)
std::map< std::string, ParameterValuesType > ParameterMapType
static std::string_view ParameterMapStartOfCommentString(const ParameterMapStringFormat format)
static std::vector< std::string > ToVectorOfStrings(const TContainer &container)
static std::vector< std::string > ToVectorOfStrings(const itk::Matrix< T, NRows, NColumns > &matrix)
static bool StringToValue(const std::string &str, T &value)
static std::string ToString(double)
static std::string SecondsToDHMS(const double totalSeconds, const unsigned int precision)
static bool StringToValue(const std::string &str, std::string &value)
static std::string ObjectPtrToString(itk::Object *)
std::vector< std::string > ParameterValuesType
static bool StringToValue(const std::string &str, itk::Object *&value)
static bool StringToValue(const std::string &str, bool &value)
static std::string ToString(const bool arg)
static ParameterMapStringFormat StringToParameterMapStringFormat(const std::string &str)
static bool StringToValue(const std::string &str, float &value)
static bool StringToValue(const std::string &str, char &value)
static std::string CreateParameterMapFileNameExtension(const ParameterMapStringFormat format)
static bool IsNumber(const std::string &)
static itk::OptimizerParameters< double > ToOptimizerParameters(const std::vector< double > &)
static std::string ToString(const TInteger integerValue)
static std::string ParameterMapToString(const ParameterMapType &, const ParameterMapStringFormat)
static bool StringToValue(const std::string &str, unsigned char &value)
static bool StringToValue(const std::string &str, double &value)
static std::string ToNativePathNameSeparators(const std::string &)
static bool StringToValue(const std::string &str, signed char &value)
static constexpr const char * BoolToString(const bool arg)
class ITK_TEMPLATE_EXPORT OptimizerParameters