SelectItem.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * Copyright (c) 2023, Bastiaan van der Plaat <bastiaan.v.d.plaat@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "SelectItem.h"
  7. #include <LibIPC/Decoder.h>
  8. #include <LibIPC/Encoder.h>
  9. template<>
  10. ErrorOr<void> IPC::encode(Encoder& encoder, Web::HTML::SelectItemOption const& item)
  11. {
  12. TRY(encoder.encode(item.id));
  13. TRY(encoder.encode(item.label));
  14. TRY(encoder.encode(item.value));
  15. TRY(encoder.encode(item.selected));
  16. TRY(encoder.encode(item.disabled));
  17. return {};
  18. }
  19. template<>
  20. ErrorOr<Web::HTML::SelectItemOption> IPC::decode(Decoder& decoder)
  21. {
  22. auto id = TRY(decoder.decode<u32>());
  23. auto label = TRY(decoder.decode<String>());
  24. auto value = TRY(decoder.decode<String>());
  25. auto selected = TRY(decoder.decode<bool>());
  26. auto disabled = TRY(decoder.decode<bool>());
  27. return Web::HTML::SelectItemOption { id, selected, disabled, {}, move(label), move(value) };
  28. }
  29. template<>
  30. ErrorOr<void> IPC::encode(Encoder& encoder, Web::HTML::SelectItemOptionGroup const& item)
  31. {
  32. TRY(encoder.encode(item.label));
  33. TRY(encoder.encode(item.items));
  34. return {};
  35. }
  36. template<>
  37. ErrorOr<Web::HTML::SelectItemOptionGroup> IPC::decode(Decoder& decoder)
  38. {
  39. auto label = TRY(decoder.decode<String>());
  40. auto items = TRY(decoder.decode<Vector<Web::HTML::SelectItemOption>>());
  41. return Web::HTML::SelectItemOptionGroup { move(label), move(items) };
  42. }
  43. template<>
  44. ErrorOr<void> IPC::encode(Encoder&, Web::HTML::SelectItemSeparator const&)
  45. {
  46. return {};
  47. }
  48. template<>
  49. ErrorOr<Web::HTML::SelectItemSeparator> IPC::decode(Decoder&)
  50. {
  51. return Web::HTML::SelectItemSeparator {};
  52. }