3#include <Tempest/Platform>
4#include <Tempest/TextCodec>
13using namespace Tempest;
17 return PathFileExistsW(
reinterpret_cast<const WCHAR*
>(path.c_str()));
19 std::string p=Tempest::TextCodec::toUtf8(path);
20 struct stat buffer={};
21 return stat(p.c_str(),&buffer)==0;
26 auto path = std::u16string(pathv);
27 std::u16string next = path+segment;
29 if(type==Dir::FT_File)
34 Dir::scan(path,[&path,&next,&segment,type](
const std::u16string& p, Dir::FileType t){
37 for(
size_t i=0;;++i) {
38 char16_t cs = segment[i];
40 if(
'A'<=cs && cs<=
'Z')
41 cs =
char16_t(cs-
'A'+
'a');
42 if(
'A'<=cp && cp<=
'Z')
43 cp =
char16_t(cp-
'A'+
'a');
53 if(type==Dir::FT_File)
58std::u16string
FileUtil::nestedPath(std::u16string_view gpath,
const std::initializer_list<const char16_t*> &name, Dir::FileType type) {
59 std::u16string path = std::u16string(gpath);
60 for(
auto& segment:name)
bool exists(const std::u16string &path)
std::u16string caseInsensitiveSegment(std::u16string_view path, const char16_t *segment, Tempest::Dir::FileType type)
std::u16string nestedPath(std::u16string_view gpath, const std::initializer_list< const char16_t * > &name, Tempest::Dir::FileType type)