GamepadMessageUtils.h 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #ifndef mozilla_dom_gamepad_GamepadMessageUtils_h
  2. #define mozilla_dom_gamepad_GamepadMessageUtils_h
  3. #include "ipc/IPCMessageUtils.h"
  4. #include "mozilla/dom/GamepadServiceType.h"
  5. #include "mozilla/dom/GamepadPoseState.h"
  6. namespace IPC {
  7. template<>
  8. struct ParamTraits<mozilla::dom::GamepadServiceType> :
  9. public ContiguousEnumSerializer<mozilla::dom::GamepadServiceType,
  10. mozilla::dom::GamepadServiceType(0),
  11. mozilla::dom::GamepadServiceType(
  12. mozilla::dom::GamepadServiceType::NumGamepadServiceType)> {};
  13. template<>
  14. struct ParamTraits<mozilla::dom::GamepadCapabilityFlags> :
  15. public BitFlagsEnumSerializer<mozilla::dom::GamepadCapabilityFlags,
  16. mozilla::dom::GamepadCapabilityFlags::Cap_All> {};
  17. template <>
  18. struct ParamTraits<mozilla::dom::GamepadPoseState>
  19. {
  20. typedef mozilla::dom::GamepadPoseState paramType;
  21. static void Write(Message* aMsg, const paramType& aParam)
  22. {
  23. WriteParam(aMsg, aParam.flags);
  24. WriteParam(aMsg, aParam.orientation[0]);
  25. WriteParam(aMsg, aParam.orientation[1]);
  26. WriteParam(aMsg, aParam.orientation[2]);
  27. WriteParam(aMsg, aParam.orientation[3]);
  28. WriteParam(aMsg, aParam.position[0]);
  29. WriteParam(aMsg, aParam.position[1]);
  30. WriteParam(aMsg, aParam.position[2]);
  31. WriteParam(aMsg, aParam.angularVelocity[0]);
  32. WriteParam(aMsg, aParam.angularVelocity[1]);
  33. WriteParam(aMsg, aParam.angularVelocity[2]);
  34. WriteParam(aMsg, aParam.angularAcceleration[0]);
  35. WriteParam(aMsg, aParam.angularAcceleration[1]);
  36. WriteParam(aMsg, aParam.angularAcceleration[2]);
  37. WriteParam(aMsg, aParam.linearVelocity[0]);
  38. WriteParam(aMsg, aParam.linearVelocity[1]);
  39. WriteParam(aMsg, aParam.linearVelocity[2]);
  40. WriteParam(aMsg, aParam.linearAcceleration[0]);
  41. WriteParam(aMsg, aParam.linearAcceleration[1]);
  42. WriteParam(aMsg, aParam.linearAcceleration[2]);
  43. }
  44. static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
  45. {
  46. if (!ReadParam(aMsg, aIter, &(aResult->flags)) ||
  47. !ReadParam(aMsg, aIter, &(aResult->orientation[0])) ||
  48. !ReadParam(aMsg, aIter, &(aResult->orientation[1])) ||
  49. !ReadParam(aMsg, aIter, &(aResult->orientation[2])) ||
  50. !ReadParam(aMsg, aIter, &(aResult->orientation[3])) ||
  51. !ReadParam(aMsg, aIter, &(aResult->position[0])) ||
  52. !ReadParam(aMsg, aIter, &(aResult->position[1])) ||
  53. !ReadParam(aMsg, aIter, &(aResult->position[2])) ||
  54. !ReadParam(aMsg, aIter, &(aResult->angularVelocity[0])) ||
  55. !ReadParam(aMsg, aIter, &(aResult->angularVelocity[1])) ||
  56. !ReadParam(aMsg, aIter, &(aResult->angularVelocity[2])) ||
  57. !ReadParam(aMsg, aIter, &(aResult->angularAcceleration[0])) ||
  58. !ReadParam(aMsg, aIter, &(aResult->angularAcceleration[1])) ||
  59. !ReadParam(aMsg, aIter, &(aResult->angularAcceleration[2])) ||
  60. !ReadParam(aMsg, aIter, &(aResult->linearVelocity[0])) ||
  61. !ReadParam(aMsg, aIter, &(aResult->linearVelocity[1])) ||
  62. !ReadParam(aMsg, aIter, &(aResult->linearVelocity[2])) ||
  63. !ReadParam(aMsg, aIter, &(aResult->linearAcceleration[0])) ||
  64. !ReadParam(aMsg, aIter, &(aResult->linearAcceleration[1])) ||
  65. !ReadParam(aMsg, aIter, &(aResult->linearAcceleration[2]))) {
  66. return false;
  67. }
  68. return true;
  69. }
  70. };
  71. } // namespace IPC
  72. #endif // mozilla_dom_gamepad_GamepadMessageUtils_h