// SPDX-License-Identifier: GPL-2.0-or-later #ifndef SEEN_CANVAS_ITEM_PTR_H #define SEEN_CANVAS_ITEM_PTR_H /* * An entirely analogous file to display/drawing-item-ptr.h. */ #include #include namespace Inkscape { class CanvasItem; } /// Deleter object which calls the unlink() method of CanvasItem. struct CanvasItemUnlinkDeleter { template void operator()(T *t) { static_assert(std::is_base_of_v); t->unlink(); } }; /// Smart pointer used to hold CanvasItems, like std::unique_ptr. template using CanvasItemPtr = std::unique_ptr; /// Convienence function to create a CanvasItemPtr, like std::make_unique. template auto make_canvasitem(Args&&... args) { return CanvasItemPtr(new T(std::forward(args)...)); }; #endif // SEEN_CANVAS_ITEM_PTR_H