yuzu/src/core/hle/kernel/k_event.h

58 lines
1.3 KiB
C
Raw Normal View History

2021-02-04 03:41:27 +04:00
// Copyright 2021 yuzu emulator team
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
2021-05-06 05:20:08 +04:00
#include "core/hle/kernel/object.h"
2021-02-04 03:41:27 +04:00
namespace Kernel {
class KernelCore;
class KReadableEvent;
class KWritableEvent;
2021-05-06 05:20:08 +04:00
class KEvent final : public Object {
2021-05-02 10:03:43 +04:00
public:
2021-05-06 05:20:08 +04:00
explicit KEvent(KernelCore& kernel, std::string&& name);
~KEvent() override;
static std::shared_ptr<KEvent> Create(KernelCore& kernel, std::string&& name);
2021-02-04 03:41:27 +04:00
2021-05-06 05:20:08 +04:00
void Initialize();
2021-02-04 03:41:27 +04:00
2021-05-06 05:20:08 +04:00
void Finalize() override {}
2021-02-04 03:41:27 +04:00
2021-05-06 05:20:08 +04:00
std::string GetTypeName() const override {
return "KEvent";
2021-02-04 03:41:27 +04:00
}
2021-05-06 05:20:08 +04:00
static constexpr HandleType HANDLE_TYPE = HandleType::Event;
HandleType GetHandleType() const override {
return HANDLE_TYPE;
2021-02-04 03:41:27 +04:00
}
2021-05-06 05:20:08 +04:00
std::shared_ptr<KReadableEvent>& GetReadableEvent() {
return readable_event;
}
2021-02-04 03:41:27 +04:00
2021-05-06 05:20:08 +04:00
std::shared_ptr<KWritableEvent>& GetWritableEvent() {
return writable_event;
2021-02-04 03:41:27 +04:00
}
2021-05-06 05:20:08 +04:00
const std::shared_ptr<KReadableEvent>& GetReadableEvent() const {
2021-02-05 05:47:15 +04:00
return readable_event;
}
2021-05-06 05:20:08 +04:00
const std::shared_ptr<KWritableEvent>& GetWritableEvent() const {
2021-02-05 05:47:15 +04:00
return writable_event;
}
2021-02-04 03:41:27 +04:00
private:
2021-05-06 05:20:08 +04:00
std::shared_ptr<KReadableEvent> readable_event;
std::shared_ptr<KWritableEvent> writable_event;
2021-02-04 03:41:27 +04:00
bool initialized{};
};
} // namespace Kernel