optional<FileAttributes> GetAttributes(const char* Path) { WIN32_FILE_ATTRIBUTE_DATA wfad; if (!GetFileAttributesExA(Path, GetFileExInfoStandard, &wfad)) return nullopt; FileAttributes ret{}; ret.Attributes = wfad.dwFileAttributes; ret.CreationTime = GetU64(wfad.ftCreationTime); ret.LastAccessTime = GetU64(wfad.ftLastAccessTime); ret.LastModifiedTime = GetU64(wfad.ftLastWriteTime); ret.Size = GetU64(wfad.nFileSizeHigh, wfad.nFileSizeLow); return ret; }
_U64 CConstObject::GetU64(const char* name, _U32 index) const { return GetU64(Zion::StringFormat("%s[%d]", name, index).c_str()); }
static constexpr u64 GetU64(FILETIME filetime) { return GetU64(filetime.dwHighDateTime, filetime.dwLowDateTime); }
uint64_t utils::GetU64c(char *str,int &pos){ uint64_t r = GetU64(str,pos); pos += 8; return r; }