|
C++ YT Wrapper
C++ library for working with YT clusters
|
Go to the source code of this file.
Namespaces | |
| namespace | NYT |
| Main namespace of YT client. | |
Typedefs | |
| using | NYT::TFluentAny = TFluentYsonBuilder::TAny<TFluentYsonVoid> |
| Builder representing any value. | |
| using | NYT::TFluentList = TFluentYsonBuilder::TListType<TFluentYsonVoid> |
| Builder representing the inside of a list (list fragment). | |
| using | NYT::TFluentMap = TFluentYsonBuilder::TMapType<TFluentYsonVoid> |
| Builder representing the inside of a map (map fragment). | |
| using | NYT::TFluentAttributes = TFluentYsonBuilder::TAttributes<TFluentYsonVoid> |
| Builder representing the inside of attributes. | |
Functions | |
| template<class TState> | |
| TFluentYsonBuilder::TAny< TFluentYsonHolder< TState > > | NYT::BuildYsonFluentlyWithState (::TIntrusivePtr< TState > state) |
| TFluentYsonBuilder::TAny< TFluentYsonHolder< TFluentYsonWriterState > > | NYT::BuildYsonStringFluently (::NYson::EYsonFormat format=::NYson::EYsonFormat::Text) |
| Create a fluent adapter returning a TString with corresponding YSON when construction is finished. | |
| TFluentYsonBuilder::TAny< TFluentYsonHolder< TFluentYsonBuilderState > > | NYT::BuildYsonNodeFluently () |
| Create a fluent adapter returning a NYT::TNode when construction is finished. | |
Adapters for working with NYson::IYsonConsumer in a structured way, with compile-time syntax checks.
The following documentation is copied verbatim from yt/core/ytree/fluent.h.
WHAT IS THIS
Fluent adapters encapsulate invocation of IYsonConsumer methods in a convenient structured manner. Key advantage of fluent-like code is that attempt of building syntactically incorrect YSON structure will result in a compile-time error.
Each fluent object is associated with a context that defines possible YSON tokens that may appear next. For example, TFluentMap is a fluent object that corresponds to a location within YSON map right before a key-value pair or the end of the map.
More precisely, each object that may be obtained by a sequence of fluent method calls has the full history of its enclosing YSON composite types in its single template argument hereinafter referred to as TParent. This allows us not to forget the original context after opening and closing the embedded composite structure.
It is possible to invoke a separate YSON building procedure by calling one of convenience Do* methods. There are two possibilities here: it is possible to delegate invocation context either as a fluent object (like TFluentMap, TFluentList, TFluentAttributes or TFluentAny) or as a raw IYsonConsumer*. The latter is discouraged since it is impossible to check if a given side-built YSON structure fits current fluent context. For example it is possible to call Do() method inside YSON map passing consumer to a procedure that will treat context like it is in a list. Passing typed fluent builder saves you from such a misbehaviour.
TFluentXxx corresponds to an internal class of TXxx without any history hidden in template argument. It allows you to write procedures of form:
void BuildSomeAttributesInYson(TFluentMap fluent) { ... }
without thinking about the exact way how this procedure is nested in other procedures.
An important notation: we will refer to a function whose first argument is TFluentXxx as TFuncXxx.
BRIEF LIST OF AVAILABLE METHODS
Only the most popular methods are covered here. Refer to the code for the rest of them.
TAny:
TFluentMap:
TFluentList:
TFluentAttributes: