64 bool isVirtual()
const{
return constructor_ ==
nullptr;}
71 void addToRegistry()
const;
84 Object* getDefaultObject()
const;
108 setParent(&T::staticType);
124 typename std::enable_if<std::is_abstract<T>::value>::type setConstructor() {
125 setConstructor(
nullptr);
131 typedef T* (*FResolveClsSpec)(StringView value);
132 static_assert(std::is_same<
decltype(&T::Resolve), FResolveClsSpec>::value,
"T must have Resolve method with signature T* (StringView value)");
133 setResolve(
reinterpret_cast<FResolve
>(&T::Resolve));
139 void getAllProperties(std::vector<Property*>& out,
bool overwriteSameName =
false)
const;
142 FConstructor constructor_{
nullptr};
143 FResolve resolve_{
nullptr};