#ifndef NTX_HEADNODE_H #define NTX_HEADNODE_H #include #include #include namespace ntx { class NtxINode; using NtxNodePtr = std::shared_ptr; class NtxHeadNode { public: NtxHeadNode() = default; ~NtxHeadNode() = default; NtxHeadNode(const NtxHeadNode&) = delete; NtxHeadNode& operator=(const NtxHeadNode&) = delete; NtxHeadNode(NtxHeadNode&&) = default; NtxHeadNode& operator=(NtxHeadNode&&) = default; bool copyNode(NtxNodePtr node); bool cutNode(NtxNodePtr node); NtxNodePtr pasteNode(NtxNodePtr parent, int index = -1); bool addNode(NtxNodePtr parent, NtxNodePtr node, int index = -1); bool deleteNode(NtxNodePtr node); bool hasClipboard() const; void clearClipboard(); NtxNodePtr peekClipboard() const; private: NtxClipboard m_clipboard; // ← Eigene Klasse als Member! bool m_isCutOperation{false}; bool validateNode(NtxNodePtr node) const; bool canAddToParent(NtxNodePtr parent, NtxNodePtr child) const; }; } // namespace ntx #endif // NTX_HEADNODE_H