6 #ifndef LLU_FILEUTILITIES_H
7 #define LLU_FILEUTILITIES_H
19 using FilePtr = std::unique_ptr<std::FILE, int (*)(std::FILE*)>;
34 void validatePath(
const std::string& fileName, std::ios::openmode mode);
47 std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>,
wchar_t> convertor;
48 if constexpr (!std::is_same_v<T, wchar_t>) {
49 std::wstring tmp = convertor.from_bytes(source);
50 return std::basic_string<T> { std::begin(tmp), std::end(tmp) };
52 return convertor.from_bytes(source);
55 std::wstring_convert<std::codecvt_utf8_utf16<T>, T> convertor;
56 return convertor.from_bytes(source);
71 std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>,
wchar_t> convertor;
72 if constexpr (!std::is_same_v<T, wchar_t>) {
73 return convertor.to_bytes(std::wstring { std::begin(source), std::end(source) });
75 return convertor.to_bytes(source);
78 std::wstring_convert<std::codecvt_utf8_utf16<T>, T> convertor;
79 return convertor.to_bytes(source);
93 std::wstring_convert<std::codecvt_utf8<uint32_t>, uint32_t> convertor;
94 if constexpr (!std::is_same_v<T, uint32_t>) {
95 std::basic_string<uint32_t> tmp = convertor.from_bytes(source);
96 return std::basic_string<T> { std::begin(tmp), std::end(tmp) };
98 return convertor.from_bytes(source);
101 std::wstring_convert<std::codecvt_utf8<T>, T> convertor;
102 return convertor.from_bytes(source);
116 std::wstring_convert<std::codecvt_utf8<uint32_t>, uint32_t> convertor;
117 if constexpr (!std::is_same_v<T, uint32_t>) {
118 return convertor.to_bytes(std::basic_string<uint32_t> { std::begin(source), std::end(source) });
120 return convertor.to_bytes(source);
123 std::wstring_convert<std::codecvt_utf8<T>, T> convertor;
124 return convertor.to_bytes(source.data());
140 virtual int flag(std::ios::openmode )
const;
148 int flag(std::ios::openmode m)
const override;
173 std::fstream
openFileStream(
const std::string& fileName, std::ios::openmode mode,
const SharePolicy& shp = AlwaysReadExclusiveWrite {});
176 #endif // LLU_FILEUTILITIES_H