Forráskód Böngészése

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.
Jan de Visser 3 éve
szülő
commit
c2c47fb9bb

+ 9 - 0
Userland/Libraries/LibSQL/Tuple.cpp

@@ -132,6 +132,15 @@ Tuple& Tuple::operator+=(Value const& value)
     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
 {
     if ((m_descriptor->size() == 0) && (other.m_descriptor->size() == 0)) {

+ 1 - 0
Userland/Libraries/LibSQL/Tuple.h

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