// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include #include #include "core/hle/service/psc/time/common.h" namespace Core { class System; } namespace Service::Glue::Time { class TimeZoneBinary { public: explicit TimeZoneBinary(Core::System& system_) : time_zone_scratch_space(0x2800, 0), system{system_} {} Result Mount(); bool IsValid(const Service::PSC::Time::LocationName& name); u32 GetTimeZoneCount(); Result GetTimeZoneVersion(Service::PSC::Time::RuleVersion& out_rule_version); Result GetTimeZoneRule(std::span& out_rule, size_t& out_rule_size, const Service::PSC::Time::LocationName& name); Result GetTimeZoneLocationList(u32& out_count, std::span out_names, size_t max_names, u32 index); private: void Reset(); Result Read(size_t& out_read_size, std::span out_buffer, size_t out_buffer_size, std::string_view path); void GetListPath(std::string& out_path); void GetVersionPath(std::string& out_path); void GetTimeZonePath(std::string& out_path, const Service::PSC::Time::LocationName& name); FileSys::VirtualDir time_zone_binary_romfs{}; Result time_zone_binary_mount_result{ResultUnknown}; std::vector time_zone_scratch_space; Core::System& system; }; } // namespace Service::Glue::Time