| 600 | : self(new QueryContextData(layers, tr, path)) {} |
| 601 | |
| 602 | void QueryContext::addIndex(Reference<IndexInfo> index) { |
| 603 | if (index->size() == 1) { |
| 604 | self->layers = Reference<ITDoc>(new SimpleIndexPlugin( |
| 605 | self->prefix, index, Reference<IExpression>(new ExtPathExpression(index->indexKeys[0].first, true, true)), |
| 606 | self->layers)); |
| 607 | } else { |
| 608 | std::vector<std::pair<Reference<IExpression>, int>> exprs(index->size()); |
| 609 | std::transform(index->indexKeys.begin(), index->indexKeys.end(), exprs.begin(), |
| 610 | [](std::pair<std::string, int> index_pair) { |
| 611 | return std::make_pair( |
| 612 | Reference<IExpression>(new ExtPathExpression(index_pair.first, true, true)), |
| 613 | index_pair.second); |
| 614 | }); |
| 615 | self->layers = Reference<ITDoc>(new CompoundIndexPlugin(self->prefix, index, exprs, self->layers)); |
| 616 | } |
| 617 | } |
| 618 | |
| 619 | Future<Optional<DataValue>> QueryContext::get(StringRef key) { |
| 620 | return self->get(key); |
no test coverage detected