#pragma once #include namespace NYsonPull::NDetail { enum class percent_scalar_type { boolean, float64 }; struct percent_scalar { //! Text boolean literals static constexpr TStringBuf true_literal = "%true"; static constexpr TStringBuf false_literal = "%false"; //! Text floating-point literals static constexpr TStringBuf nan_literal = "%nan"; static constexpr TStringBuf positive_inf_literal = "%inf"; static constexpr TStringBuf negative_inf_literal = "%-inf"; percent_scalar_type type; union { double as_float64; bool as_boolean; } value; percent_scalar(double v) { type = percent_scalar_type::float64; value.as_float64 = v; } percent_scalar(bool v) { type = percent_scalar_type::boolean; value.as_boolean = v; } }; }