6 #ifndef SWIFT_MISC_MIXIN_MIXINMETATYPE_H
7 #define SWIFT_MISC_MIXIN_MIXINMETATYPE_H
25 template <
class Derived>
42 bool isA(
int metaTypeId)
const;
45 const Derived *derived()
const;
48 template <
typename Base2>
49 static bool baseIsA(
const Base2 *base,
int metaTypeId);
50 static bool baseIsA(
const void *,
int);
53 template <
class Derived>
56 private_ns::MetaTypeHelper<Derived>::maybeRegisterMetaType();
59 template <
class Derived>
62 return private_ns::MetaTypeHelper<Derived>::maybeGetMetaTypeId();
65 template <
class Derived>
71 template <
class Derived>
75 if (metaTypeId == getMetaTypeId()) {
return true; }
79 template <
class Derived>
82 return static_cast<const Derived *
>(
this);
85 template <
class Derived>
86 Derived *MetaType<Derived>::derived()
88 return static_cast<Derived *
>(
this);
91 template <
class Derived>
92 template <
typename Base2>
93 bool MetaType<Derived>::baseIsA(
const Base2 *base,
int metaTypeId)
95 return base->
isA(metaTypeId);
98 template <
class Derived>
99 bool MetaType<Derived>::baseIsA(
const void *,
int)
108 #define SWIFT_MISC_DECLARE_USING_MIXIN_METATYPE(DERIVED) \
109 using ::swift::misc::mixin::MetaType<DERIVED>::registerMetadata; \
110 using ::swift::misc::mixin::MetaType<DERIVED>::getMetaTypeId; \
111 using ::swift::misc::mixin::MetaType<DERIVED>::getClassName; \
112 using ::swift::misc::mixin::MetaType<DERIVED>::isA;
Mixin classes which implement common operations for value classes.
typename TMetaBaseOf< T >::type TMetaBaseOfT
Alias for typename TMetaBaseOf<T>::type.