]> git.tdb.fi Git - ext/openal.git/blob - common/alfstream.h
Import OpenAL Soft 1.23.1 sources
[ext/openal.git] / common / alfstream.h
1 #ifndef AL_FSTREAM_H
2 #define AL_FSTREAM_H
3
4 #ifdef _WIN32
5
6 #include <string>
7 #include <fstream>
8
9
10 namespace al {
11
12 // Inherit from std::ifstream to accept UTF-8 filenames
13 class ifstream final : public std::ifstream {
14 public:
15     explicit ifstream(const char *filename, std::ios_base::openmode mode=std::ios_base::in);
16     explicit ifstream(const std::string &filename, std::ios_base::openmode mode=std::ios_base::in)
17         : ifstream{filename.c_str(), mode} { }
18
19     explicit ifstream(const wchar_t *filename, std::ios_base::openmode mode=std::ios_base::in)
20         : std::ifstream{filename, mode} { }
21     explicit ifstream(const std::wstring &filename, std::ios_base::openmode mode=std::ios_base::in)
22         : ifstream{filename.c_str(), mode} { }
23
24     void open(const char *filename, std::ios_base::openmode mode=std::ios_base::in);
25     void open(const std::string &filename, std::ios_base::openmode mode=std::ios_base::in)
26     { open(filename.c_str(), mode); }
27
28     ~ifstream() override;
29 };
30
31 } // namespace al
32
33 #else /* _WIN32 */
34
35 #include <fstream>
36
37 namespace al {
38
39 using ifstream = std::ifstream;
40
41 } // namespace al
42
43 #endif /* _WIN32 */
44
45 #endif /* AL_FSTREAM_H */