void List::insert(size_t row_ndx, T value) { verify_in_transaction(); verify_valid_row(row_ndx, true); m_table->insert_empty_row(row_ndx); m_table->set(0, row_ndx, value); }
void List::delete_all() { verify_in_transaction(); if (m_link_view) m_link_view->remove_all_target_rows(); else m_table->clear(); }
void List::remove_all() { verify_in_transaction(); if (m_link_view) m_link_view->clear(); else m_table->clear(); }
void List::add(int value) { verify_in_transaction(); if (m_link_view) add(static_cast<size_t>(value)); else add(static_cast<int64_t>(value)); }
void List::delete_at(size_t row_ndx) { verify_in_transaction(); verify_valid_row(row_ndx); if (m_link_view) m_link_view->remove_target_row(row_ndx); else m_table->remove(row_ndx); }
void List::swap(size_t ndx1, size_t ndx2) { verify_in_transaction(); verify_valid_row(ndx1); verify_valid_row(ndx2); if (m_link_view) m_link_view->swap(ndx1, ndx2); else m_table->swap_rows(ndx1, ndx2); }
void List::move(size_t source_ndx, size_t dest_ndx) { verify_in_transaction(); verify_valid_row(source_ndx); verify_valid_row(dest_ndx); // Can't be one past end due to removing one earlier if (source_ndx == dest_ndx) return; if (m_link_view) m_link_view->move(source_ndx, dest_ndx); else m_table->move_row(source_ndx, dest_ndx); }
void List<T>::shift(ContextType ctx, ObjectType this_object, size_t argc, const ValueType arguments[], ReturnValue &return_value) { validate_argument_count(argc, 0); auto list = get_internal<T, ListClass<T>>(this_object); if (list->size() == 0) { list->verify_in_transaction(); return_value.set_undefined(); } else { auto realm_object = realm::Object(list->get_realm(), list->get_object_schema(), list->get(0)); return_value.set(RealmObject<T>::create_instance(ctx, realm_object)); list->remove(0); } }
void ListClass<T>::pop(ContextType ctx, FunctionType, ObjectType this_object, size_t argc, const ValueType arguments[], ReturnValue &return_value) { validate_argument_count(argc, 0); auto list = get_internal<T, ListClass<T>>(this_object); size_t size = list->size(); if (size == 0) { list->verify_in_transaction(); return_value.set_undefined(); } else { size_t index = size - 1; auto realm_object = realm::Object(list->get_realm(), list->get_object_schema(), list->get(index)); return_value.set(RealmObjectClass<T>::create_instance(ctx, std::move(realm_object))); list->remove(index); } }
void List::set(size_t row_ndx, size_t target_row_ndx) { verify_in_transaction(); verify_valid_row(row_ndx); m_link_view->set(row_ndx, target_row_ndx); }
void List::set(size_t row_ndx, T value) { verify_in_transaction(); verify_valid_row(row_ndx); m_table->set(0, row_ndx, value); }
void List::add(size_t target_row_ndx) { verify_in_transaction(); m_link_view->add(target_row_ndx); }
void List::add(T value) { verify_in_transaction(); m_table->set(0, m_table->add_empty_row(), value); }