aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/public/purecalc/common/transformations/align_output_schema.h
blob: da673aaede136dc1107d1ea911b1f501afe5ebd0 (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
#pragma once

#include <yql/essentials/public/purecalc/common/processor_mode.h>

#include <yql/essentials/core/yql_graph_transformer.h>
#include <yql/essentials/core/yql_type_annotation.h>

namespace NYql {
    namespace NPureCalc {
        /**
         * A transformer which converts an output type of the expression to the given type or reports an error.
         *
         * @param outputStruct destination output struct type.
         * @param acceptsBlocks indicates, whether the output type need to be
         *        preprocessed.
         * @param processorMode specifies the top-most container of the result.
         * @return a graph transformer for type alignment.
         */
        TAutoPtr<IGraphTransformer> MakeOutputAligner(
            const TTypeAnnotationNode* outputStruct,
            bool acceptsBlocks,
            EProcessorMode processorMode
        );
    }
}