1311 std::unique_ptr<tls_selection> result;
1313 auto add = [&result](
const std::string &chainID,
int from,
int to)
1315 std::unique_ptr<tls_selection> sc(
new tls_selection_chain(chainID));
1316 std::unique_ptr<tls_selection> sr(
new tls_selection_range_seq(from, to));
1317 std::unique_ptr<tls_selection> s(
new tls_selection_intersection(sc, sr));
1319 if (result ==
nullptr)
1320 result.reset(s.release());
1322 result.reset(
new tls_selection_union{ result, s });
1336 int seqNr2 = seqNr1;
1348 if (chain1 != chain2)
1350 std::cerr <<
"Warning, ranges over multiple chains detected" << std::endl;
1352 std::unique_ptr<tls_selection> sc1(
new tls_selection_chain(chain1));
1353 std::unique_ptr<tls_selection> sr1(
new tls_selection_range_seq(seqNr1,
kResidueNrWildcard));
1354 std::unique_ptr<tls_selection> s1(
new tls_selection_intersection(sc1, sr1));
1356 std::unique_ptr<tls_selection> sc2(
new tls_selection_chain(chain2));
1357 std::unique_ptr<tls_selection> sr2(
new tls_selection_range_seq(
kResidueNrWildcard, seqNr2));
1358 std::unique_ptr<tls_selection> s2(
new tls_selection_intersection(sc2, sr2));
1360 std::unique_ptr<tls_selection> s(
new tls_selection_union(s1, s2));
1362 if (result ==
nullptr)
1363 result.reset(s.release());
1365 result.reset(
new tls_selection_union{ result, s });
1371 if (not chain1.empty())
1372 add(chain1, seqNr1, seqNr2);
1375 add(chain1, seqNr1, seqNr1);
std::tuple< std::string, int > ParseAtom()
virtual void match(int token)
const int kResidueNrWildcard