예제 #1
0
파일: results.cpp 프로젝트: 0atme0/tutu1
Results::Results(SharedRealm r, LinkViewRef lv, util::Optional<Query> q, SortOrder s)
: m_realm(std::move(r))
, m_link_view(lv)
, m_table(&lv->get_target_table())
, m_sort(std::move(s))
, m_mode(Mode::LinkView)
{
    REALM_ASSERT(m_sort.column_indices.size() == m_sort.ascending.size());
    if (q) {
        m_query = std::move(*q);
        m_mode = Mode::Query;
    }
}
예제 #2
0
ListNotifier::ListNotifier(LinkViewRef lv, std::shared_ptr<Realm> realm)
: CollectionNotifier(std::move(realm))
, m_prev_size(lv->size())
{
    // Find the lv's column, since that isn't tracked directly
    size_t row_ndx = lv->get_origin_row_index();
    m_col_ndx = not_found;
    auto& table = lv->get_origin_table();
    for (size_t i = 0, count = table.get_column_count(); i != count; ++i) {
        if (table.get_column_type(i) == type_LinkList && table.get_linklist(i, row_ndx) == lv) {
            m_col_ndx = i;
            break;
        }
    }
    REALM_ASSERT(m_col_ndx != not_found);

    set_table(lv->get_target_table());

    auto& sg = Realm::Internal::get_shared_group(*get_realm());
    m_lv_handover = sg.export_linkview_for_handover(lv);
}