6 #ifndef SWIFT_MISC_METACLASS_H 
    7 #define SWIFT_MISC_METACLASS_H 
   10 #include <type_traits> 
   13 #include <QLatin1String> 
   28 #if defined(Q_OS_WIN) && defined(Q_CC_GNU) 
   29 #    define SWIFT_NO_EXPORT_CONSTEXPR constexpr inline __attribute__((always_inline)) 
   31 #    define SWIFT_NO_EXPORT_CONSTEXPR constexpr 
   37 #    define SWIFT_TRAILING_VA_ARGS(...) , __VA_ARGS__ 
   39 #    define SWIFT_TRAILING_VA_ARGS(...) , ##__VA_ARGS__ 
   52 #define SWIFT_METACLASS(CLASS, ...)                                                                                    \ 
   53     friend struct swift::misc::private_ns::CMetaClassAccessor;                                                         \ 
   54     struct MetaClass : public swift::misc::CMetaClass                                                                  \ 
   56         using Class = CLASS;                                                                                           \ 
   57         SWIFT_NO_EXPORT_CONSTEXPR static auto getMemberList() { return makeMetaMemberList(__VA_ARGS__); }              \ 
   72 #define SWIFT_METAMEMBER(MEMBER, ...) makeMetaMember(&Class::m_##MEMBER, #MEMBER SWIFT_TRAILING_VA_ARGS(__VA_ARGS__)) 
   80 #define SWIFT_METAMEMBER_NAMED(MEMBER, NAME, ...)                                                                      \ 
   81     makeMetaMember(&Class::m_##MEMBER, NAME SWIFT_TRAILING_VA_ARGS(__VA_ARGS__)) 
  116     struct MetaFlags : 
public std::integral_constant<quint64, F>
 
  119         constexpr 
operator std::bool_constant<static_cast<bool>(F)>() 
const { 
return {}; }
 
  126     template <qu
int64 A, qu
int64 B>
 
  136     template <qu
int64 A, qu
int64 B>
 
  146     template <
typename M, qu
int64 Flags>
 
  163         template <
typename Flags2>
 
  164         static constexpr 
bool has(Flags2 flags)
 
  170         template <
typename T, 
typename... Ts>
 
  171         decltype(
auto) 
in(T &&
object, Ts &&...args)
 const 
  173             return std::invoke(
m_ptr, std::forward<T>(
object), std::forward<Ts>(args)...);
 
  184     template <
typename... Members>
 
  191         static constexpr 
size_t c_size = 
sizeof...(Members);
 
  232         template <
typename... Members>
 
  235             return { { { { members }... } } };
 
  240         template <
typename M, qu
int64 Flags = 0>
 
  244             static_assert(std::is_member_object_pointer_v<M>, 
"M must be a pointer to member object");
 
  245             return { ptrToMember, name, index, flags };
 
  254     template <
typename MetaClass>
 
  259         template <
typename F>
 
  262             MetaClass::getMemberList().m_members.for_each(std::forward<F>(visitor));
 
  269         struct CMetaClassAccessor
 
  271             template <
typename T>
 
  272             constexpr 
static auto getIntrospector()
 
  274                 return CMetaClassIntrospector<typename T::MetaClass>();
 
  284     template <
typename T>
 
  287         return private_ns::CMetaClassAccessor::getIntrospector<T>();
 
Free functions in swift::misc.
 
QString fromStdString(const std::string &str)
 
Simple literal type containing a single QLatin1String.
 
const QLatin1String m_latin1
Embedded string.
 
constexpr CExplicitLatin1String(QLatin1String s)
Implicit constructor.