blob: 83e804a85cbd9cbb0dec6ea31fb69d67a2d485c5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "node.h"
#include <vector>
namespace search::query {
class Intermediate : public Node
{
std::vector<Node *> _children;
public:
using UP = std::unique_ptr<Intermediate>;
Intermediate(const Intermediate & rhs) = delete;
Intermediate & operator = (const Intermediate & rhs) = delete;
Intermediate() = default;
virtual ~Intermediate() = 0;
bool isIntermediate() const override { return true; }
const std::vector<Node *> &getChildren() const { return _children; }
Intermediate &reserve(size_t sz) { _children.reserve(sz); return *this; }
Intermediate &prepend(Node::UP child);
Intermediate &append(Node::UP child);
Node::UP stealFirst();
};
}
|