blob: ead5ab308d3c93278a919dba057eb4b8230d1d2a [file] [log] [blame]
#ifndef IMAGE_IO_BASE_VALIDATED_NUMBER_H_ // NOLINT
#define IMAGE_IO_BASE_VALIDATED_NUMBER_H_ // NOLINT
#include <sstream>
#include <string>
namespace photos_editing_formats {
namespace image_io {
template <class T>
struct ValidatedNumber {
ValidatedNumber() : ValidatedNumber(T(), false) {}
ValidatedNumber(const T& value_, bool is_valid_)
: value(value_), is_valid(is_valid_) {}
using value_type = T;
T value;
bool is_valid;
};
template <class T>
ValidatedNumber<T> GetValidatedNumber(const std::string& str) {
std::stringstream ss(str);
ValidatedNumber<T> result;
ss >> result.value;
if (!ss.fail()) {
std::string extra;
ss >> extra;
if (extra.empty()) {
result.is_valid = true;
}
}
return result;
}
} // namespace image_io
} // namespace photos_editing_formats
#endif // IMAGE_IO_BASE_VALIDATED_NUMBER_H_ // NOLINT