19 #ifndef MIR_COMMON_EVENT_H_ 20 #define MIR_COMMON_EVENT_H_ 82 template<
typename Data>
83 char const*
consume(
char const* pos, Data& data)
85 std::memcpy(&data, pos,
sizeof data);
86 return pos +
sizeof data;
93 static_assert(std::is_trivially_copyable<T>::value,
"");
95 static_assert(__has_trivial_copy(T),
"");
104 assert_type_is_trivially_copyable<T>();
107 memcpy(t, bytes.data(), bytes.size());
115 assert_type_is_trivially_copyable<T>();
117 std::string encoded_bytes;
118 encoded_bytes.append(reinterpret_cast<char const*>(ev),
sizeof(T));
120 return encoded_bytes;
126 assert_type_is_trivially_copyable<T>();
129 memcpy(t, ev,
sizeof(T));
All things Mir.
Definition: atomic_callback.h:25
MirResizeEvent * to_resize()
Definition: event.cpp:183
mir::EventUPtr deserialize_from(std::string const &bytes)
Definition: event.h:102
Definition: keymap_event.h:27
Definition: surface_event.h:24
MirEventType type() const
Definition: event.cpp:148
void assert_type_is_trivially_copyable()
Definition: event.h:90
MirEventType type_
Definition: event.h:75
MirSurfaceOutputEvent * to_surface_output()
Definition: event.cpp:233
std::string serialize_from(MirEvent const *ev)
Definition: event.h:113
MirInputDeviceStateEvent * to_input_device_state()
Definition: event.cpp:243
Definition: prompt_session_event.h:24
static mir::EventUPtr deserialize(std::string const &bytes)
Definition: event.cpp:74
MirEvent & operator=(MirEvent const &event)=default
MirInputConfigurationEvent * to_input_configuration()
Definition: event.cpp:163
MirKeymapEvent * to_keymap()
Definition: event.cpp:223
static std::string serialize(MirEvent const *event)
Definition: event.cpp:115
MirEvent * deep_copy(MirEvent const *ev)
Definition: event.h:124
MirEvent * clone() const
Definition: event.cpp:41
Definition: surface_output_event.h:27
std::unique_ptr< MirEvent, void(*)(MirEvent *)> EventUPtr
Definition: seat.h:32
Definition: resize_event.h:24
Definition: close_surface_event.h:24
MirCloseSurfaceEvent * to_close_surface()
Definition: event.cpp:213
MirOrientationEvent * to_orientation()
Definition: event.cpp:203
MirPromptSessionEvent * to_prompt_session()
Definition: event.cpp:193
Definition: motion_event.h:52
MirSurfaceEvent * to_surface()
Definition: event.cpp:173
MirInputEvent * to_input()
Definition: event.cpp:153
char const * consume(char const *pos, Data &data)
Definition: event.h:83
Definition: orientation_event.h:24