time: Simplify interface creation

We can use one instance of the interface instead of duplicating code.
This commit is contained in:
Lioncash 2018-07-24 02:45:23 -04:00
parent 47ac369180
commit a61124a9e7
6 changed files with 15 additions and 64 deletions

View file

@ -235,12 +235,10 @@ add_library(core STATIC
hle/service/spl/spl.h
hle/service/ssl/ssl.cpp
hle/service/ssl/ssl.h
hle/service/time/interface.cpp
hle/service/time/interface.h
hle/service/time/time.cpp
hle/service/time/time.h
hle/service/time/time_s.cpp
hle/service/time/time_s.h
hle/service/time/time_u.cpp
hle/service/time/time_u.h
hle/service/vi/vi.cpp
hle/service/vi/vi.h
hle/service/vi/vi_m.cpp

View file

@ -2,17 +2,18 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/hle/service/time/time_s.h"
#include "core/hle/service/time/interface.h"
namespace Service::Time {
TIME_S::TIME_S(std::shared_ptr<Module> time) : Module::Interface(std::move(time), "time:s") {
TIME::TIME(std::shared_ptr<Module> time, const char* name)
: Module::Interface(std::move(time), name) {
static const FunctionInfo functions[] = {
{0, &TIME_S::GetStandardUserSystemClock, "GetStandardUserSystemClock"},
{1, &TIME_S::GetStandardNetworkSystemClock, "GetStandardNetworkSystemClock"},
{2, &TIME_S::GetStandardSteadyClock, "GetStandardSteadyClock"},
{3, &TIME_S::GetTimeZoneService, "GetTimeZoneService"},
{4, &TIME_S::GetStandardLocalSystemClock, "GetStandardLocalSystemClock"},
{0, &TIME::GetStandardUserSystemClock, "GetStandardUserSystemClock"},
{1, &TIME::GetStandardNetworkSystemClock, "GetStandardNetworkSystemClock"},
{2, &TIME::GetStandardSteadyClock, "GetStandardSteadyClock"},
{3, &TIME::GetTimeZoneService, "GetTimeZoneService"},
{4, &TIME::GetStandardLocalSystemClock, "GetStandardLocalSystemClock"},
{5, nullptr, "GetEphemeralNetworkSystemClock"},
{50, nullptr, "SetStandardSteadyClockInternalOffset"},
{100, nullptr, "IsStandardUserSystemClockAutomaticCorrectionEnabled"},

View file

@ -8,9 +8,9 @@
namespace Service::Time {
class TIME_S final : public Module::Interface {
class TIME final : public Module::Interface {
public:
explicit TIME_S(std::shared_ptr<Module> time);
explicit TIME(std::shared_ptr<Module> time, const char* name);
};
} // namespace Service::Time

View file

@ -9,9 +9,8 @@
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/client_port.h"
#include "core/hle/kernel/client_session.h"
#include "core/hle/service/time/interface.h"
#include "core/hle/service/time/time.h"
#include "core/hle/service/time/time_s.h"
#include "core/hle/service/time/time_u.h"
namespace Service::Time {
@ -212,8 +211,8 @@ Module::Interface::Interface(std::shared_ptr<Module> time, const char* name)
void InstallInterfaces(SM::ServiceManager& service_manager) {
auto time = std::make_shared<Module>();
std::make_shared<TIME_S>(time)->InstallAsService(service_manager);
std::make_shared<TIME_U>(time)->InstallAsService(service_manager);
std::make_shared<TIME>(time, "time:s")->InstallAsService(service_manager);
std::make_shared<TIME>(time, "time:u")->InstallAsService(service_manager);
}
} // namespace Service::Time

View file

@ -1,31 +0,0 @@
// Copyright 2018 yuzu emulator team
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/hle/service/time/time_u.h"
namespace Service::Time {
TIME_U::TIME_U(std::shared_ptr<Module> time) : Module::Interface(std::move(time), "time:u") {
static const FunctionInfo functions[] = {
{0, &TIME_U::GetStandardUserSystemClock, "GetStandardUserSystemClock"},
{1, &TIME_U::GetStandardNetworkSystemClock, "GetStandardNetworkSystemClock"},
{2, &TIME_U::GetStandardSteadyClock, "GetStandardSteadyClock"},
{3, &TIME_U::GetTimeZoneService, "GetTimeZoneService"},
{4, &TIME_U::GetStandardLocalSystemClock, "GetStandardLocalSystemClock"},
{5, nullptr, "GetEphemeralNetworkSystemClock"},
{50, nullptr, "SetStandardSteadyClockInternalOffset"},
{100, nullptr, "IsStandardUserSystemClockAutomaticCorrectionEnabled"},
{101, nullptr, "SetStandardUserSystemClockAutomaticCorrectionEnabled"},
{102, nullptr, "GetStandardUserSystemClockInitialYear"},
{200, nullptr, "IsStandardNetworkSystemClockAccuracySufficient"},
{300, nullptr, "CalculateMonotonicSystemClockBaseTimePoint"},
{400, nullptr, "GetClockSnapshot"},
{401, nullptr, "GetClockSnapshotFromSystemClockContext"},
{500, nullptr, "CalculateStandardUserSystemClockDifferenceByUser"},
{501, nullptr, "CalculateSpanBetween"},
};
RegisterHandlers(functions);
}
} // namespace Service::Time

View file

@ -1,16 +0,0 @@
// Copyright 2018 yuzu emulator team
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include "core/hle/service/time/time.h"
namespace Service::Time {
class TIME_U final : public Module::Interface {
public:
explicit TIME_U(std::shared_ptr<Module> time);
};
} // namespace Service::Time