API — ICoreEssentials/UI
The public contract of 3 header(s) under src/ICoreEssentials/UI — 8 class/struct definition(s), 16 declaration(s). Each section shows the header's banner and its public (and protected-virtual) surface exactly as the file writes it.
| Header | Defines | Declarations | Bases |
|---|---|---|---|
ICoreNativeHandle.h | ICoreNativeWidget, ICoreNativeItem, ICoreNativeObject, ICoreNativeScene, ICoreAnimationTarget, ICoreNativeLayout | 12 | — |
ICoreNativeHandleAccess.h | ICoreForeignWidget | 3 | public ICoreNativeWidget |
ICoreObject.h | ICoreObject | 1 | public QObject |
ICoreNativeHandle.h#
src/ICoreEssentials/UI/ICoreNativeHandle.h
The one thing a Qt-free header is allowed to say about the toolkit object behind a wrapper: that it exists, and that it has an address.
Every UI wrapper in ICoreEssentials is moving to the SDK shape --
class ICoreThing { public: ICoreThing(); ~ICoreThing(); private: class Impl; std::unique_ptr<Impl> impl; };
ICoreNativeWidget#
ICoreNativeHandle.h:161 · class · 2 declaration(s)
Implemented by every wrapper that owns a native widget (something that can be parented, laid out, or shown).
class ICoreNativeWidget {
public:
virtual ~ICoreNativeWidget() = default;
// The QWidget behind this wrapper, as an opaque handle. Never null for a
// live wrapper.
virtual ICoreNativeHandle nativeWidgetHandle() const = 0;
};
};
ICoreNativeItem#
ICoreNativeHandle.h:173 · class · 2 declaration(s)
Implemented by wrappers owning a native scene item -- the QGraphicsItem family, which is not a widget and cannot be laid out.
class ICoreNativeItem {
public:
virtual ~ICoreNativeItem() = default;
virtual ICoreNativeHandle nativeItemHandle() const = 0;
};
};
ICoreNativeObject#
ICoreNativeHandle.h:183 · class · 2 declaration(s)
Implemented by wrappers owning a bare QObject -- models, filters, effects, animations.
class ICoreNativeObject {
public:
virtual ~ICoreNativeObject() = default;
virtual ICoreNativeHandle nativeObjectHandle() const = 0;
};
};
ICoreNativeScene#
ICoreNativeHandle.h:196 · class · 2 declaration(s)
Implemented by wrappers owning a native scene -- the QGraphicsScene the item family lives in.
class ICoreNativeScene {
public:
virtual ~ICoreNativeScene() = default;
virtual ICoreNativeHandle nativeSceneHandle() const = 0;
};
};
ICoreAnimationTarget#
ICoreNativeHandle.h:228 · class · 2 declaration(s)
Implemented by a wrapper that can be driven by a PROPERTY animation -- ICoreAnimation's target.
class ICoreAnimationTarget {
public:
virtual ~ICoreAnimationTarget() = default;
virtual ICoreNativeHandle nativeAnimationTargetHandle() const = 0;
};
};
ICoreNativeLayout#
ICoreNativeHandle.h:260 · class · 2 declaration(s)
DECIDED (task P0.3): a layout gets its OWN interface.
class ICoreNativeLayout {
public:
virtual ~ICoreNativeLayout() = default;
virtual ICoreNativeHandle nativeLayoutHandle() const = 0;
};
};
File-scope declarations#
// An opaque pointer to the toolkit object a wrapper owns. Meaningless outside
// ICoreEssentials/*.cpp -- never dereference it, never cast it at a call site.
using ICoreNativeHandle = void*;
ICoreNativeHandleAccess.h#
src/ICoreEssentials/UI/ICoreNativeHandleAccess.h
IMPLEMENTATION SIDE ONLY. Include this from a .cpp inside ICoreEssentials (or another sanctioned zone) -- never from a public wrapper header, because it names Qt types and would drag them back across the boundary this whole exercise exists to build.
ICoreNativeHandle.h gives the Qt-free half of the seam: an opaque void* and the three interfaces that hand one out. This file gives the other half: the casts that turn that void* back into something the toolkit understands. They live here, in one place, so that the unchecked cast appears once per kind rather than once per call site.
Every helper tolerates a null wrapper pointer and returns null for it. That is deliberate:
parentis optional almost everywhere in this API, and making each caller write the null check is how one of them eventually
ICoreForeignWidget#
ICoreNativeHandleAccess.h:186 · class · final · bases public ICoreNativeWidget · 3 declaration(s)
ICoreForeignWidget (task Q0.6) -- the REPLACEMENT for the helper above, and the answer to the trap documented on it.
class ICoreForeignWidget final : public ICoreNativeWidget {
public:
explicit ICoreForeignWidget(QWidget* widget) noexcept;
ICoreNativeHandle nativeWidgetHandle() const override;
// One pointer. Public so the .cpp's static_asserts can reach them -- see
// UI/Values/ICoreColor.h, whose shape this copies.
static constexpr std::size_t kStateSize = sizeof(void*);
static constexpr std::size_t kStateAlign = alignof(void*);
};
ICoreObject.h#
src/ICoreEssentials/UI/ICoreObject.h
ICoreObject#
ICoreObject.h:20 · class · bases public QObject · 1 declaration(s)
⚠ FROZEN QT LAYER (P8.5) — DO NOT EDIT, DO NOT ADD MEMBERS.
class ICoreObject : public QObject {
protected:
// Base only — this layer is never instantiated bare.
// Declared here, defined in ICoreObject.cpp -- the header surface rule
// takes bodies out even when the body is a forwarding one-liner.
explicit ICoreObject(QObject* parent = nullptr);
};
};