42 std::vector<std::string> mExtensions;
43 std::string mDescription;
46 constexpr FileFormat(
const char* extension, std::string description =
"") :
47 mExtensions {extension}, mDescription(description)
49 clearExtension(mExtensions[0]);
53 const std::string& extension,
54 std::string description =
"") :
59 constexpr FileFormat(
Range auto extensions, std::string description =
"") :
60 mExtensions(extensions), mDescription(description)
62 for (
auto&
ext : mExtensions) {
68 std::sort(mExtensions.begin(), mExtensions.end());
71 const std::string& description()
const {
return mDescription; }
73 const std::vector<std::string>& extensions()
const {
return mExtensions; }
75 bool matchExtension(std::string extension)
const
77 clearExtension(extension);
78 for (
const auto&
ext : mExtensions) {
79 if (
ext == extension) {
99 for (
const auto&
ext : mExtensions) {
101 return std::strong_ordering::equal;
105 return mExtensions[0] <=>
other.mExtensions[0];
114 static constexpr void clearExtension(std::string& extension)
116 if (!extension.empty() && extension.front() ==
'.') {
117 extension.erase(0, 1);
119 extension = toLower(extension);