8#ifndef INKSCAPE_DRAWINGITEM_TAGS_H
9#define INKSCAPE_DRAWINGITEM_TAGS_H
15#define DRAWINGITEM_HIERARCHY_DATA(X)\
30#define X(n, ...) class n; __VA_ARGS__
31DRAWINGITEM_HIERARCHY_DATA(X)
36enum class DrawingItemTag :
int
38 #define X(n, ...) n##_first, __VA_ARGS__ n##_tmp, n##_last = n##_tmp - 1,
39 DRAWINGITEM_HIERARCHY_DATA(X)
47#define X(n, ...) template <> inline constexpr int first_tag<Inkscape::n> = static_cast<int>(Inkscape::DrawingItemTag::n##_first); __VA_ARGS__
48DRAWINGITEM_HIERARCHY_DATA(X)
51#define X(n, ...) template <> inline constexpr int last_tag<Inkscape::n> = static_cast<int>(Inkscape::DrawingItemTag::n##_last); __VA_ARGS__
52DRAWINGITEM_HIERARCHY_DATA(X)
55#undef DRAWINGITEM_HIERARCHY_DATA
Hand-rolled LLVM-style RTTI system for class hierarchies where dynamic_cast isn't fast enough.
Helper class to stream background task notifications as a series of messages.