Merge pull request #19583 from hyarion/refactor/base-type
Refactor Base::Type
This commit is contained in:
@@ -57,11 +57,11 @@ App::PropertyData App::Extension::propertyData;
|
||||
|
||||
void App::Extension::init()
|
||||
{
|
||||
assert(Extension::classTypeId == Base::Type::badType() && "don't init() twice!");
|
||||
assert(Extension::classTypeId.isBad() && "don't init() twice!");
|
||||
|
||||
/* Set up entry in the type system. */
|
||||
Extension::classTypeId =
|
||||
Base::Type::createType(Base::Type::badType(), "App::Extension", Extension::create);
|
||||
Base::Type::createType(Base::Type::BadType, "App::Extension", Extension::create);
|
||||
}
|
||||
|
||||
using namespace App;
|
||||
@@ -194,11 +194,11 @@ void Extension::initExtensionSubclass(Base::Type& toInit,
|
||||
Base::Type::instantiationMethod method)
|
||||
{
|
||||
// don't init twice!
|
||||
assert(toInit == Base::Type::badType());
|
||||
assert(toInit.isBad());
|
||||
// get the parent class
|
||||
Base::Type parentType(Base::Type::fromName(ParentName));
|
||||
// forgot init parent!
|
||||
assert(parentType != Base::Type::badType());
|
||||
assert(!parentType.isBad());
|
||||
|
||||
// create the new type
|
||||
toInit = Base::Type::createType(parentType, ClassName, method);
|
||||
|
||||
@@ -59,7 +59,7 @@ private: \
|
||||
#define EXTENSION_TYPESYSTEM_SOURCE_P(_class_) \
|
||||
Base::Type _class_::getExtensionClassTypeId(void) { return _class_::classTypeId; } \
|
||||
Base::Type _class_::getExtensionTypeId(void) const { return _class_::classTypeId; } \
|
||||
Base::Type _class_::classTypeId = Base::Type::badType(); \
|
||||
Base::Type _class_::classTypeId = Base::Type::BadType; \
|
||||
void * _class_::create(void){\
|
||||
return new _class_ ();\
|
||||
}
|
||||
@@ -68,7 +68,7 @@ void * _class_::create(void){\
|
||||
#define EXTENSION_TYPESYSTEM_SOURCE_ABSTRACT_P(_class_) \
|
||||
Base::Type _class_::getExtensionClassTypeId(void) { return _class_::classTypeId; } \
|
||||
Base::Type _class_::getExtensionTypeId(void) const { return _class_::classTypeId; } \
|
||||
Base::Type _class_::classTypeId = Base::Type::badType(); \
|
||||
Base::Type _class_::classTypeId = Base::Type::BadType; \
|
||||
void * _class_::create(void){return 0;}
|
||||
|
||||
/// define to implement a subclass of Base::BaseClass
|
||||
@@ -79,7 +79,7 @@ void _class_::init(void){\
|
||||
}
|
||||
|
||||
#define EXTENSION_TYPESYSTEM_SOURCE_TEMPLATE(_class_) \
|
||||
template<> Base::Type _class_::classTypeId = Base::Type::badType(); \
|
||||
template<> Base::Type _class_::classTypeId = Base::Type::BadType; \
|
||||
template<> Base::Type _class_::getExtensionClassTypeId(void) { return _class_::classTypeId; } \
|
||||
template<> Base::Type _class_::getExtensionTypeId(void) const { return _class_::classTypeId; } \
|
||||
template<> void * _class_::create(void){\
|
||||
|
||||
@@ -363,7 +363,7 @@ Base::Type ProjectFile::getTypeId(const std::string& name) const
|
||||
// <Object type="Mesh::MeshFeature" name="Mesh" />
|
||||
// <Objects/>
|
||||
if (!xmlDocument) {
|
||||
return Base::Type::badType();
|
||||
return Base::Type::BadType;
|
||||
}
|
||||
|
||||
DOMNodeList* nodes = xmlDocument->getElementsByTagName(XStrLiteral("Objects").unicodeForm());
|
||||
@@ -388,7 +388,7 @@ Base::Type ProjectFile::getTypeId(const std::string& name) const
|
||||
}
|
||||
}
|
||||
|
||||
return Base::Type::badType();
|
||||
return Base::Type::BadType;
|
||||
}
|
||||
|
||||
std::list<ProjectFile::PropertyFile> ProjectFile::getPropertyFiles(const std::string& name) const
|
||||
|
||||
@@ -382,7 +382,7 @@ void _class_::init(void){\
|
||||
}
|
||||
|
||||
#define TYPESYSTEM_SOURCE_TEMPLATE(_class_) \
|
||||
template<> Base::Type _class_::classTypeId = Base::Type::badType(); \
|
||||
template<> Base::Type _class_::classTypeId = Base::Type::BadType; \
|
||||
template<> Base::Type _class_::getClassTypeId(void) { return _class_::classTypeId; } \
|
||||
template<> Base::Type _class_::getTypeId(void) const { return _class_::classTypeId; } \
|
||||
template<> void * _class_::create(void){\
|
||||
|
||||
@@ -3453,17 +3453,10 @@ unsigned int PropertyPersistentObject::getMemSize() const
|
||||
|
||||
void PropertyPersistentObject::setValue(const char* type)
|
||||
{
|
||||
if (!type) {
|
||||
type = "";
|
||||
}
|
||||
if (type[0]) {
|
||||
Base::Type::importModule(type);
|
||||
Base::Type t = Base::Type::fromName(type);
|
||||
if (!Base::Tools::isNullOrEmpty(type)) {
|
||||
Base::Type t = Base::Type::getTypeIfDerivedFrom(type, Persistence::getClassTypeId());
|
||||
if (t.isBad()) {
|
||||
throw Base::TypeError("Invalid type");
|
||||
}
|
||||
if (!t.isDerivedFrom(Persistence::getClassTypeId())) {
|
||||
throw Base::TypeError("Type must be derived from Base::Persistence");
|
||||
throw Base::TypeError("Invalid type or type must be derived from Base::Persistence");
|
||||
}
|
||||
if (_pObject && _pObject->getTypeId() == t) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user