Beispiel #1
0
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);
}
Beispiel #2
0
void List::delete_all()
{
    verify_in_transaction();
    if (m_link_view)
        m_link_view->remove_all_target_rows();
    else
        m_table->clear();
}
Beispiel #3
0
void List::remove_all()
{
    verify_in_transaction();
    if (m_link_view)
        m_link_view->clear();
    else
        m_table->clear();
}
Beispiel #4
0
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));
}
Beispiel #5
0
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);
}
Beispiel #6
0
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);
}
Beispiel #7
0
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);
}
Beispiel #8
0
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);
    }
}
Beispiel #9
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);
    }
}
Beispiel #10
0
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);
}
Beispiel #11
0
void List::set(size_t row_ndx, T value)
{
    verify_in_transaction();
    verify_valid_row(row_ndx);
    m_table->set(0, row_ndx, value);
}
Beispiel #12
0
void List::add(size_t target_row_ndx)
{
    verify_in_transaction();
    m_link_view->add(target_row_ndx);
}
Beispiel #13
0
void List::add(T value)
{
    verify_in_transaction();
    m_table->set(0, m_table->add_empty_row(), value);
}