Row.cpp 1010 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright (c) 2021, Jan de Visser <jan@de-visser.net>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibSQL/Meta.h>
  7. #include <LibSQL/Row.h>
  8. #include <LibSQL/Serialize.h>
  9. #include <LibSQL/Tuple.h>
  10. namespace SQL {
  11. Row::Row()
  12. : Tuple()
  13. {
  14. }
  15. Row::Row(TupleDescriptor const& descriptor)
  16. : Tuple(descriptor)
  17. {
  18. }
  19. Row::Row(RefPtr<TableDef> table)
  20. : Tuple(table->to_tuple_descriptor())
  21. , m_table(table)
  22. {
  23. }
  24. Row::Row(RefPtr<TableDef> table, u32 pointer, ByteBuffer& buffer)
  25. : Tuple(table->to_tuple_descriptor())
  26. {
  27. // FIXME Sanitize constructor situation in Tuple so this can be better
  28. size_t offset = 0;
  29. deserialize(buffer, offset);
  30. deserialize_from<u32>(buffer, offset, m_next_pointer);
  31. set_pointer(pointer);
  32. }
  33. void Row::serialize(ByteBuffer& buffer) const
  34. {
  35. Tuple::serialize(buffer);
  36. serialize_to<u32>(buffer, next_pointer());
  37. }
  38. void Row::copy_from(Row const& other)
  39. {
  40. Tuple::copy_from(other);
  41. m_next_pointer = other.next_pointer();
  42. }
  43. }