comparison generator/abstractmetabuilder.cpp @ 257:17b5e13364b7 lifetime

(none)
author maxter
date Wed, 16 Sep 2009 13:56:02 +0000
parents ae34188ddd84
children 515d6e1c7b10
comparison
equal deleted inserted replaced
256:b1abe7f57321 257:17b5e13364b7
1308 } else if (meta_function->isConstructor() && !meta_function->isPrivate()) { 1308 } else if (meta_function->isConstructor() && !meta_function->isPrivate()) {
1309 *meta_class -= AbstractMetaAttributes::Final; 1309 *meta_class -= AbstractMetaAttributes::Final;
1310 meta_class->setHasNonPrivateConstructor(true); 1310 meta_class->setHasNonPrivateConstructor(true);
1311 } 1311 }
1312 1312
1313 // Classes with virtual destructors should always have a shell class 1313 if (meta_function->isDestructor() && !meta_function->isFinal())
1314 // (since we aren't registering the destructors, we need this extra check) 1314 meta_class->setHasVirtualDestructor(true);
1315 if (meta_function->isDestructor() && !meta_function->isFinal())
1316 meta_class->setForceShellClass(true);
1317 1315
1318 if (!meta_function->isDestructor() 1316 if (!meta_function->isDestructor()
1319 && !meta_function->isInvalid() 1317 && !meta_function->isInvalid()
1320 && (!meta_function->isConstructor() || !meta_function->isPrivate())) { 1318 && (!meta_function->isConstructor() || !meta_function->isPrivate())) {
1321 1319
1561 if (cc_pos > 0) 1559 if (cc_pos > 0)
1562 stripped_class_name = stripped_class_name.mid(cc_pos + 2); 1560 stripped_class_name = stripped_class_name.mid(cc_pos + 2);
1563 1561
1564 TypeInfo function_type = function_item->type(); 1562 TypeInfo function_type = function_item->type();
1565 if (function_name.startsWith('~')) { 1563 if (function_name.startsWith('~')) {
1566 meta_function->setFunctionType(AbstractMetaFunction::DestructorFunction); 1564 meta_function->setFunctionType(AbstractMetaFunction::DestructorFunction);
1567 meta_function->setInvalid(true); 1565 //meta_function->setInvalid(true);
1568 } else if (strip_template_args(function_name) == stripped_class_name) { 1566 } else if (strip_template_args(function_name) == stripped_class_name) {
1569 meta_function->setFunctionType(AbstractMetaFunction::ConstructorFunction); 1567 meta_function->setFunctionType(AbstractMetaFunction::ConstructorFunction);
1570 meta_function->setName(m_current_class->name()); 1568 meta_function->setName(m_current_class->name());
1571 } else { 1569 } else {
1572 bool ok; 1570 bool ok;