18#ifndef elxConversion_h
19#define elxConversion_h
57 static constexpr const char *
60 return arg ?
"true" :
"false";
65 static itk::OptimizerParameters<double>
88 template <
typename TInteger>
92 static_assert(std::is_integral<TInteger>::value,
"An integer type expected!");
93 static_assert(!std::is_same<TInteger, bool>::value,
"No bool expected!");
94 return std::to_string(integerValue);
106 template <
typename TContainer,
typename SFINAE =
typename TContainer::iterator>
107 static std::vector<std::string>
110 std::vector<std::string> result;
112 result.reserve(container.size());
114 for (
const auto element : container)
124 template <
typename T,
unsigned int NRows,
unsigned int NColumns>
125 static std::vector<std::string>
128 std::vector<std::string> result;
129 result.reserve(NColumns * NRows);
131 for (
unsigned column{}; column < NColumns; ++column)
133 for (
unsigned row{}; row < NRows; ++row)
143 template <
typename TValue>
144 static std::vector<TValue>
147 vector1.insert(end(vector1), std::make_move_iterator(begin(vector2)), std::make_move_iterator(end(vector2)));
174 static_assert(!std::is_same<T, bool>::value,
"This StringToValue<T> overload does not support bool!");
178 static_assert(
sizeof(T) > 1,
"This StringToValue<T> overload does not support (signed/unsigned) char!");
180 auto inputStream = [&str] {
181 const auto decimalPointPos = str.find_first_of(
'.');
182 const bool hasDecimalPointAndTrailingZeros =
183 (decimalPointPos != std::string::npos) &&
184 (std::count(str.cbegin() + decimalPointPos + 1, str.cend(),
'0') == (str.size() - decimalPointPos - 1));
185 return std::istringstream(
186 hasDecimalPointAndTrailingZeros ? std::string(str.cbegin(), str.cbegin() + decimalPointPos) : str);
190 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::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)
std::vector< std::string > ParameterValuesType
static bool StringToValue(const std::string &str, bool &value)
static std::string ToString(const bool arg)
static bool StringToValue(const std::string &str, float &value)
static bool StringToValue(const std::string &str, char &value)
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 &)
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