|
template<typename U >
requires std::constructible_from<Storage, U&&> |
| | explicit (false) BaseCell(U &&v) |
| | Construct by forwarding into the storage (v becomes Storage::value).
|
| |
template<typename U >
requires std::assignable_from<Storage&, U&&> |
| Derived & | operator= (U &&v) |
| | Assign to the storage from v.
|
| |
|
Storage & | get () |
| | Mutable access to the held storage.
|
| |
|
Storage const & | get () const |
| | Read-only access to the held storage.
|
| |
| std::string_view | kind () const override |
| | Wire-stable kind identifier for this cell.
|
| |
| std::optional< DisplayInfo > const & | overridden_display_info () const override |
| | Read-only access to this cell's optional display info.
|
| |
| cell_t | clone () const override |
| | Deep-copy this cell.
|
| |
| std::partial_ordering | compare (ICell const &other) const override |
| | Default three-way comparison: kind first, then storage value.
|
| |
| json_t | to_json () const override |
| | Default JSON serialization for cells with JSON-convertible storage.
|
| |
| void | inject_display_info (json_t &j) const |
| | Copy this cell's display info (if any) into the JSON object under "d".
|
| |
| virtual std::string | to_string () const =0 |
| | Render the cell's value as a compact human-readable string.
|
| |
| virtual std::string | to_formatted_string () const |
| | Render the cell as a multi-line, indented string.
|
| |
| virtual std::size_t | hash_value () const noexcept |
| | Equality-consistent hash that mirrors compare's display-info-insensitivity.
|
| |
| cell_t | with_display_info (DisplayInfo m) const |
| | Return a deep copy with the entire display info block replaced.
|
| |
| cell_t | with_name (std::string v) const |
| | Return a deep copy with name set to v.
|
| |
| cell_t | with_description (std::string v) const |
| | Return a deep copy with description set to v.
|
| |
| cell_t | with_icon (comms::Icon icon) const |
| | Return a deep copy with icon set to the typed icon.
|
| |
| cell_t | with_icon (std::string const &v) const |
| | Return a deep copy with icon parsed from an Iconify set:name string (e.g.
|
| |
| cell_t | with_color (comms::Color color) const |
| | Return a deep copy with color set to the typed color.
|
| |
| cell_t | with_color (std::string const &v) const |
| | Return a deep copy with color parsed from a color string (hex like "#ffcc00", a CSS-functional form, or a CSS color name).
|
| |
|
template<typename... Args>
requires std::constructible_from<Derived, Args&&...> |
| static std::shared_ptr< Derived > | of (Args &&... args) |
| | Construct a shared_ptr<Derived> forwarding the arguments.
|
| |
template<typename... Args>
requires std::constructible_from<Derived, Args&&...> |
| static std::unique_ptr< Derived > | unique (Args &&... args) |
| | Construct a unique_ptr<Derived> forwarding the arguments.
|
| |
| template<typename Out > |
| static void | absorb_display_info (json_t const &j, Out &out) |
| | Read "d" (if present) from a JSON object and assign it onto a cell.
|
| |
| static cell_t | from_json_strict (json_t const &j) |
| | Strict shorthand for the recurring cell_from_json + make_shared.
|
| |
template<typename Derived, typename Storage>
struct parcel::BaseCell< Derived, Storage >
CRTP base providing default to_json / clone / kind plumbing on top of a storage type.
Concrete cells inherit BaseCell<Derived, Storage> and supply kind_id, from_json, descriptor, and to_string. The storage type is held by value as BaseCell::value and exposed through get() plus inherited container-style helpers in derived cells (PrimitiveCell, TypedListCell, etc.).
- Template Parameters
-
| Derived | The concrete cell type (CRTP self). |
| Storage | The held value type. |
template<typename Derived , typename Storage >
Default three-way comparison: kind first, then storage value.
If Storage supports <=>, that comparison is forwarded directly (which yields partial_ordering for floating-point storage). If only == is available, equal values map to equivalent and unequal values to unordered. Storage types lacking either, or std::variant storage (which UnionCell overrides), return unordered.
- Parameters
-
| other | Cell to compare with. |
- Returns
- Three-way comparison result; ignores display info.
Implements parcel::ICell.
Reimplemented in parcel::TypedListCell< T >, parcel::ListCell, parcel::TypedMapCell< T >, parcel::MapCell, parcel::StructCell< Derived, Payload, StructId >, parcel::UnionCell< Ts >, parcel::TypedHashMapCell< T >, and parcel::HashMapCell.
template<typename Derived , typename Storage >
template<typename U >
requires std::constructible_from<Storage, U&&>
Construct by forwarding into the storage (v becomes Storage::value).
Conditionally non-explicit so concrete cells (e.g. I32Cell c = 42) can be brace-/copy-initialized from a raw storage value.
- Template Parameters
-
| U | Any type the storage is constructible from. |
template<typename Derived , typename Storage >
Strict shorthand for the recurring cell_from_json + make_shared.
- absorb_display_info pattern in concrete
from_json overloads.
Validates that j is an object whose "k" matches Derived::kind_id, deserializes "v" as Storage, builds a shared_ptr<Derived> from it, and absorbs any display info block.
Requires Storage to be JSON-deserializable (every primitive cell already is) — concrete cells whose payload needs custom decoding (e.g. TypedListCell, StructCell) keep their own from_json body.
- Parameters
-
- Returns
- Newly built cell handle.
- Exceptions
-
| std::runtime_error | on shape or kind mismatch. |
template<typename Derived , typename Storage >
Default JSON serialization for cells with JSON-convertible storage.
If Storage has a JSON adapter, emits {"k": kind_id, "v": value, optional "d": display info}. Otherwise the call throws — the derived cell must override to_json itself (ListCell, MapCell, etc.).
- Returns
- JSON object representation.
- Exceptions
-
| std::runtime_error | if Storage is not JSON-convertible. |
Implements parcel::ICell.
Reimplemented in parcel::SystemTimePointCell, parcel::UnixMillisCell, parcel::DurationMsCell, parcel::YmdCell, parcel::PathCell, parcel::TypedListCell< T >, parcel::ListCell, parcel::TypedMapCell< T >, parcel::MapCell, parcel::StructCell< Derived, Payload, StructId >, parcel::UnionCell< Ts >, parcel::TypedHashMapCell< T >, and parcel::HashMapCell.