1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 18:07:34 +00:00

LibSQL: Add the 'extend' operation to the Tuple class

Tuple::extend is similar to the Vector method of the same name; it
concatenates a second Tuple to the current one.
This commit is contained in:
Jan de Visser 2021-11-02 16:34:05 -04:00 committed by Andreas Kling
parent f3a9d61891
commit c2c47fb9bb
2 changed files with 10 additions and 0 deletions

View file

@ -132,6 +132,15 @@ Tuple& Tuple::operator+=(Value const& value)
return *this; return *this;
} }
void Tuple::extend(Tuple const& other)
{
VERIFY((descriptor()->size() == size()) || (descriptor()->size() >= size() + other.size()));
if (descriptor()->size() == size()) {
descriptor()->extend(other.descriptor());
}
m_data.extend(other.m_data);
}
bool Tuple::is_compatible(Tuple const& other) const bool Tuple::is_compatible(Tuple const& other) const
{ {
if ((m_descriptor->size() == 0) && (other.m_descriptor->size() == 0)) { if ((m_descriptor->size() == 0) && (other.m_descriptor->size() == 0)) {

View file

@ -55,6 +55,7 @@ public:
Value& operator[](String const& name); Value& operator[](String const& name);
void append(Value const&); void append(Value const&);
Tuple& operator+=(Value const&); Tuple& operator+=(Value const&);
void extend(Tuple const&);
[[nodiscard]] bool is_compatible(Tuple const&) const; [[nodiscard]] bool is_compatible(Tuple const&) const;
[[nodiscard]] u32 pointer() const { return m_pointer; } [[nodiscard]] u32 pointer() const { return m_pointer; }