SFMLHelper.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // Copyright 2018 Dolphin Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <type_traits>
  5. #include <SFML/Network/Packet.hpp>
  6. #include "Common/CommonTypes.h"
  7. #include "Common/Swap.h"
  8. sf::Packet& operator>>(sf::Packet& packet, Common::BigEndianValue<u16>& data);
  9. sf::Packet& operator>>(sf::Packet& packet, Common::BigEndianValue<u32>& data);
  10. sf::Packet& operator>>(sf::Packet& packet, Common::BigEndianValue<u64>& data);
  11. template <typename Enum, std::enable_if_t<std::is_enum_v<Enum>>* = nullptr>
  12. sf::Packet& operator<<(sf::Packet& packet, Enum e)
  13. {
  14. using Underlying = std::underlying_type_t<Enum>;
  15. packet << static_cast<Underlying>(e);
  16. return packet;
  17. }
  18. template <typename Enum, std::enable_if_t<std::is_enum_v<Enum>>* = nullptr>
  19. sf::Packet& operator>>(sf::Packet& packet, Enum& e)
  20. {
  21. using Underlying = std::underlying_type_t<Enum>;
  22. Underlying value{};
  23. packet >> value;
  24. e = static_cast<Enum>(value);
  25. return packet;
  26. }
  27. namespace Common
  28. {
  29. u64 PacketReadU64(sf::Packet& packet);
  30. } // namespace Common