comparison dep/animia/src/util.cc @ 153:bd439dd6ffc5

*: make win stuff actually work, rename bsd.cc to xnu.cc It's been OS X only for ages, and these functions are different between most BSDs anyway
author Paper <mrpapersonic@gmail.com>
date Wed, 15 Nov 2023 13:28:18 -0500
parents 8700806c2cc2
children cdf79282d647
comparison
equal deleted inserted replaced
152:8700806c2cc2 153:bd439dd6ffc5
1 #include <algorithm> 1 #include <algorithm>
2 #include <fstream> 2 #include <fstream>
3 #include <sstream> 3 #include <sstream>
4 #include <string> 4 #include <string>
5 #include <cctype>
6 #include <regex> 5 #include <regex>
7 6
8 #include <iostream> 7 #include <iostream>
9 8
10 #include "animia/util.h" 9 #include "animia/util.h"
25 file.close(); 24 file.close();
26 25
27 return true; 26 return true;
28 } 27 }
29 28
29 /* this assumes ASCII... which really should be the case for what we need, anyway */
30 bool EqualStrings(const std::string& str1, const std::string& str2) { 30 bool EqualStrings(const std::string& str1, const std::string& str2) {
31 auto equal_chars = [](const char c1, const char c2) -> bool { 31 auto tolower = [](const char c) -> char {
32 return std::tolower(static_cast<unsigned char>(c1)) == std::tolower(static_cast<unsigned char>(c2)); 32 return ('A' <= c && c <= 'Z') ? c + ('a' - 'A') : c;
33 }; 33 };
34 34
35 return str1.size() == str2.size() && std::equal(str1.begin(), str1.end(), str2.begin(), equal_chars); 35 auto equal_chars = [&tolower](const char c1, const char c2) -> bool {
36 return tolower(c1) == tolower(c2);
37 };
38
39 return str1.length() == str2.length() && std::equal(str1.begin(), str1.end(), str2.begin(), equal_chars);
36 } 40 }
37 41
38 bool Stem(const std::string& filename, std::string& stem) { 42 bool Stem(const std::string& filename, std::string& stem) {
39 unsigned long long pos = filename.find_last_of("."); 43 unsigned long long pos = filename.find_last_of(".");
40 if (pos != std::string::npos) 44 if (pos != std::string::npos)