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; } }
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); }