3#include "di/container/string/prelude.h"
4#include "di/reflect/prelude.h"
5#include "di/serialization/json_deserializer.h"
6#include "di/serialization/json_serializer.h"
7#include "di/serialization/percent_encoded.h"
18 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<Pane>) {
19 return di::make_fields<
"json::v1::Pane">(
28 using Base = di::Variant<di::Box<PaneLayoutNode>,
Pane>;
31 using Base::operator=;
43 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<PaneLayoutNode>) {
51 if (index() != other.index()) {
55 return *di::get<di::Box<PaneLayoutNode>>(*this) == *di::get<di::Box<PaneLayoutNode>>(other);
57 return di::get<Pane>(*
this) == di::get<Pane>(other);
70 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<Tab>) {
71 return di::make_fields<
"json::v1::Tab">(di::field<
"pane_layout", &
Tab::pane_layout>,
87 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<Session>) {
88 return di::make_fields<
"json::v1::Session">(di::field<
"tabs", &
Session::tabs>,
100 constexpr friend auto tag_invoke(di::Tag<di::reflect>, di::InPlaceType<LayoutState>) {
101 return di::make_fields<
"json::v1::LayoutState">(
109using Layout = di::Variant<json::v1::LayoutState>;
Definition layout_json.h:10
Definition layout_json.h:10
di::Variant< json::v1::LayoutState > Layout
Definition layout_json.h:109
Direction
Definition direction.h:7
@ None
Definition direction.h:8
Definition layout_json.h:94
di::Optional< u64 > active_session_id
Definition layout_json.h:96
di::Vector< Session > sessions
Definition layout_json.h:95
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< LayoutState >)
Definition layout_json.h:100
auto operator==(LayoutState const &) const -> bool=default
Definition layout_json.h:36
i64 relative_size
Definition layout_json.h:38
di::Vector< PaneLayoutVariant > children
Definition layout_json.h:37
Direction direction
Definition layout_json.h:39
auto operator==(PaneLayoutNode const &other) const -> bool=default
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< PaneLayoutNode >)
Definition layout_json.h:43
Definition layout_json.h:27
auto operator==(PaneLayoutVariant const &other) const -> bool
Definition layout_json.h:50
di::Variant< di::Box< PaneLayoutNode >, Pane > Base
Definition layout_json.h:28
Definition layout_json.h:11
auto operator==(Pane const &) const -> bool=default
di::Optional< di::PercentEncoded<> > current_working_directory
Definition layout_json.h:14
u64 id
Definition layout_json.h:13
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< Pane >)
Definition layout_json.h:18
i64 relative_size
Definition layout_json.h:12
Definition layout_json.h:79
di::Optional< u64 > active_tab_id
Definition layout_json.h:81
di::String name
Definition layout_json.h:82
auto operator==(Session const &) const -> bool=default
di::Vector< Tab > tabs
Definition layout_json.h:80
u64 id
Definition layout_json.h:83
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< Session >)
Definition layout_json.h:87
Definition layout_json.h:60
u64 id
Definition layout_json.h:66
di::Optional< u64 > full_screen_pane_id
Definition layout_json.h:64
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< Tab >)
Definition layout_json.h:70
di::Optional< u64 > active_pane_id
Definition layout_json.h:63
PaneLayoutNode pane_layout
Definition layout_json.h:61
di::String name
Definition layout_json.h:65
auto operator==(Tab const &) const -> bool=default
di::Vector< u64 > pane_ids_by_recency
Definition layout_json.h:62