aboutsummaryrefslogtreecommitdiffstats
path: root/document/src/vespa/document/select/visitor.h
blob: ed70910472b623bbba89a9b7aff1f7740643bf97 (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
/**
 * @class document::select::Visitor
 * @ingroup select
 *
 * @brief Visitor class for going through the select tree.
 *
 * @author H�kon Humberset
 * @date 2005-06-07
 * @version $Id$
 */

#pragma once

namespace document::select {

class And;
class Compare;
class Constant;
class DocType;
class Not;
class Or;
class ArithmeticValueNode;
class FunctionValueNode;
class IdValueNode;
class InvalidConstant;
class FieldValueNode;
class FloatValueNode;
class IntegerValueNode;
class BoolValueNode;
class CurrentTimeValueNode;
class StringValueNode;
class NullValueNode;
class InvalidValueNode;
class VariableValueNode;

class Visitor {
public:
    virtual ~Visitor() = default;

    virtual void visitAndBranch(const And &) = 0;
    virtual void visitComparison(const Compare &) = 0;
    virtual void visitConstant(const Constant &) = 0;
    virtual void visitInvalidConstant(const InvalidConstant &) = 0;
    virtual void visitDocumentType(const DocType &) = 0;
    virtual void visitNotBranch(const Not &) = 0;
    virtual void visitOrBranch(const Or &) = 0;
    virtual void visitArithmeticValueNode(const ArithmeticValueNode &) = 0;
    virtual void visitFunctionValueNode(const FunctionValueNode &) = 0;
    virtual void visitIdValueNode(const IdValueNode &) = 0;
    virtual void visitFieldValueNode(const FieldValueNode &) = 0;
    virtual void visitFloatValueNode(const FloatValueNode &) = 0;
    virtual void visitVariableValueNode(const VariableValueNode &) = 0;
    virtual void visitIntegerValueNode(const IntegerValueNode &) = 0;
    virtual void visitBoolValueNode(const BoolValueNode&) = 0;
    virtual void visitCurrentTimeValueNode(const CurrentTimeValueNode &) = 0;
    virtual void visitStringValueNode(const StringValueNode &) = 0;
    virtual void visitNullValueNode(const NullValueNode &) = 0;
    virtual void visitInvalidValueNode(const InvalidValueNode &) = 0;
};

}