summaryrefslogtreecommitdiffstats
path: root/yql/essentials/parser/pg_wrapper/interface/in_range.h
blob: c62cd71eb20cee46b34545b205c5ac130b8fb2be (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
#pragma once

#include <yql/essentials/minikql/mkql_node.h>

namespace NYql {

class TPgInRange {
public:
    class TCallState {
    public:
        virtual ~TCallState() = default;
        virtual NUdf::TUnboxedValue Call(NUdf::TUnboxedValue tailval, NUdf::TUnboxedValue currval, NUdf::TUnboxedValue offset, bool sub, bool less) const = 0;
    };

    TPgInRange(ui32 procId, NKikimr::NMiniKQL::TPgType* columnType, NKikimr::NMiniKQL::TPgType* offsetType);

    TPgInRange(TPgInRange&&) noexcept;

    TPgInRange& operator=(TPgInRange&&) noexcept;

    ~TPgInRange();

    THolder<TCallState> MakeCallState() const;

private:
    class TImpl;
    THolder<const TImpl> Impl_;
};

} // namespace NYql