7#include <QtCore/qcompilerdetection.h>
26QT_WARNING_DISABLE_GCC(
"-Wnon-template-friend")
31 using MemberPtr =
typename Tag::MemberPtr;
32 friend MemberPtr get(Tag)
noexcept;
35template<
typename Tag,
typename Tag::MemberPtr Ptr>
38 friend typename Tag::MemberPtr get(Tag)
noexcept {
return Ptr; }
43#define D_DECLARE_PRIVATE_MEMBER(TagName, ClassName, Member, MemberType) \
45 using MemberPtr = MemberType ClassName::*; \
46 friend MemberPtr get(TagName) noexcept; \
48 template struct DtkGuiPrivateAccessorImpl<TagName, &ClassName::Member>
50#define D_DECLARE_PRIVATE_METHOD(TagName, ClassName, MethodName, RetType, ...) \
52 using MemberPtr = RetType (ClassName::*)(__VA_ARGS__); \
53 friend MemberPtr get(TagName) noexcept; \
55 template struct DtkGuiPrivateAccessorImpl<TagName, &ClassName::MethodName>
57#define D_DECLARE_PRIVATE_CONST_METHOD(TagName, ClassName, MethodName, RetType, ...) \
59 using MemberPtr = RetType (ClassName::*)(__VA_ARGS__) const; \
60 friend MemberPtr get(TagName) noexcept; \
62 template struct DtkGuiPrivateAccessorImpl<TagName, &ClassName::MethodName>
66namespace dtk_private_detail {
67 template<
typename Tag>
68 inline typename Tag::MemberPtr access(Tag t)
noexcept {
return get(t); }
71#define D_PRIVATE_MEMBER(obj, tag) ((obj).*dtk_private_detail::access(tag))
72#define D_PRIVATE_CALL(obj, tag, ...) ((obj).*dtk_private_detail::access(tag))(__VA_ARGS__)
Definition dprivateaccessor_p.h:37
Definition dprivateaccessor_p.h:30