SelectItem.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031
  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::SelectItem const& select_item)
  11. {
  12. TRY(encoder.encode(select_item.type));
  13. TRY(encoder.encode(select_item.label));
  14. TRY(encoder.encode(select_item.value));
  15. TRY(encoder.encode(select_item.items));
  16. TRY(encoder.encode(select_item.selected));
  17. return {};
  18. }
  19. template<>
  20. ErrorOr<Web::HTML::SelectItem> IPC::decode(Decoder& decoder)
  21. {
  22. auto type = TRY(decoder.decode<Web::HTML::SelectItem::Type>());
  23. auto label = TRY(decoder.decode<Optional<String>>());
  24. auto value = TRY(decoder.decode<Optional<String>>());
  25. auto items = TRY(decoder.decode<Optional<Vector<Web::HTML::SelectItem>>>());
  26. auto selected = TRY(decoder.decode<bool>());
  27. return Web::HTML::SelectItem { type, move(label), move(value), move(items), selected };
  28. }