object.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Copyright 2018 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include "common/assert.h"
  5. #include "core/hle/kernel/kernel.h"
  6. #include "core/hle/kernel/object.h"
  7. namespace Kernel {
  8. Object::Object(KernelCore& kernel_)
  9. : kernel{kernel_}, object_id{kernel_.CreateNewObjectID()}, name{"[UNKNOWN KERNEL OBJECT]"} {}
  10. Object::Object(KernelCore& kernel_, std::string&& name_)
  11. : kernel{kernel_}, object_id{kernel_.CreateNewObjectID()}, name{std::move(name_)} {}
  12. Object::~Object() = default;
  13. bool Object::IsWaitable() const {
  14. switch (GetHandleType()) {
  15. case HandleType::ReadableEvent:
  16. case HandleType::Thread:
  17. case HandleType::Process:
  18. case HandleType::ServerPort:
  19. case HandleType::ServerSession:
  20. return true;
  21. case HandleType::Unknown:
  22. case HandleType::Event:
  23. case HandleType::WritableEvent:
  24. case HandleType::SharedMemory:
  25. case HandleType::TransferMemory:
  26. case HandleType::ResourceLimit:
  27. case HandleType::ClientPort:
  28. case HandleType::ClientSession:
  29. case HandleType::Session:
  30. return false;
  31. }
  32. UNREACHABLE();
  33. return false;
  34. }
  35. } // namespace Kernel