C++ YT Wrapper
C++ library for working with YT clusters
Loading...
Searching...
No Matches
skiff_row.h
Go to the documentation of this file.
1#pragma once
2
10
11#include "fwd.h"
12
13#include <yt/cpp/mapreduce/skiff/skiff_schema.h>
14
16
17#include <library/cpp/skiff/skiff.h>
18
19#include <util/generic/maybe.h>
20
21namespace NYT {
22
24
35template<class T>
37 : std::false_type
38{ };
39
41
44template <typename T>
45NSkiff::TSkiffSchemaPtr GetSkiffSchema(const TMaybe<TSkiffRowHints>& /*hints*/)
46{
47 static_assert(TDependentFalse<T>, "Unimplemented `GetSkiffSchema` method");
48}
49
52template <typename T>
53NSkiff::TSkiffSchemaPtr GetParserSkiffSchema(const TMaybe<TSkiffRowHints>& hints)
54{
55 return GetSkiffSchema<T>(hints);
56}
57
59
82 : public TThrRefBase
83{
84public:
86 virtual void Parse(NSkiff::TCheckedInDebugSkiffParser* /*parser*/) = 0;
87};
88
90template <typename T>
91ISkiffRowParserPtr CreateSkiffParser(T* /*row*/, const TMaybe<TSkiffRowHints>& /*hints*/)
92{
93 static_assert(TDependentFalse<T>, "Unimplemented `CreateSkiffParser` function");
94}
95
97
102 : public TThrRefBase
103{
104public:
105 virtual void SkipRow(NSkiff::TCheckedInDebugSkiffParser* /*parser*/) = 0;
106};
107
109template <typename T>
110class TSkiffRowSkipper : public ISkiffRowSkipper {
111public:
112 explicit TSkiffRowSkipper(const TMaybe<TSkiffRowHints>& hints)
113 : Parser_(CreateSkiffParser<T>(&Row_, hints))
114 { }
115
116 void SkipRow(NSkiff::TCheckedInDebugSkiffParser* parser) {
117 Parser_->Parse(parser);
118 }
119
120private:
121 T Row_;
122 ISkiffRowParserPtr Parser_;
123};
124
127template <typename T>
128ISkiffRowSkipperPtr CreateSkiffSkipper(const TMaybe<TSkiffRowHints>& hints)
129{
130 return ::MakeIntrusive<TSkiffRowSkipper<T>>(hints);
131}
132
134
135} // namespace NYT
Definition skiff_row.h:83
virtual void Parse(NSkiff::TCheckedInDebugSkiffParser *)=0
Read one row from parser.
Definition skiff_row.h:103
Main namespace of YT client.
Definition abortable_stream.h:7
ISkiffRowParserPtr CreateSkiffParser(T *, const TMaybe< TSkiffRowHints > &)
Creates a parser for row type T.
Definition skiff_row.h:91
ISkiffRowSkipperPtr CreateSkiffSkipper(const TMaybe< TSkiffRowHints > &hints)
Definition skiff_row.h:128
NSkiff::TSkiffSchemaPtr GetParserSkiffSchema(const TMaybe< TSkiffRowHints > &hints)
Definition skiff_row.h:53
NSkiff::TSkiffSchemaPtr GetSkiffSchema(const TMaybe< TSkiffRowHints > &)
Definition skiff_row.h:45
Definition skiff_row.h:38