Skip to content

Commit c776da7

Browse files
YuriUfimtsevusiems
authored andcommitted
Refactor: change casts and remove toItem() to make it compatible with QSharedPointer
1 parent dac269f commit c776da7

File tree

6 files changed

+48
-49
lines changed

6 files changed

+48
-49
lines changed

generator/abstractmetabuilder.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -442,14 +442,14 @@ bool AbstractMetaBuilder::build()
442442
Binder binder(&model, p.location());
443443
m_dom = binder.run(ast);
444444

445-
pushScope(model_dynamic_cast<ScopeModelItem>(m_dom));
445+
pushScope(m_dom.dynamicCast<_ScopeModelItem>());
446446

447447
QHash<QString, ClassModelItem> typeMap = m_dom->classMap();
448448

449449

450450
// fix up QObject's in the type system..
451451
TypeDatabase *types = TypeDatabase::instance();
452-
fixQObjectForScope(types, model_dynamic_cast<NamespaceModelItem>(m_dom));
452+
fixQObjectForScope(types, m_dom.dynamicCast<_NamespaceModelItem>());
453453

454454

455455
// Start the generation...
@@ -707,8 +707,8 @@ AbstractMetaClass *AbstractMetaBuilder::traverseNamespace(NamespaceModelItem nam
707707
.arg(meta_class->package())
708708
.arg(namespace_item->name()));
709709

710-
traverseEnums(model_dynamic_cast<ScopeModelItem>(namespace_item), meta_class, namespace_item->qEnumDeclarations());
711-
traverseFunctions(model_dynamic_cast<ScopeModelItem>(namespace_item), meta_class);
710+
traverseEnums(namespace_item.dynamicCast<_ScopeModelItem>(), meta_class, namespace_item->qEnumDeclarations());
711+
traverseFunctions(namespace_item.dynamicCast<_ScopeModelItem>(), meta_class);
712712
// traverseClasses(model_dynamic_cast<ScopeModelItem>(namespace_item));
713713

714714
// collect all include files (since namespace items might come from different files)
@@ -721,7 +721,7 @@ AbstractMetaClass *AbstractMetaBuilder::traverseNamespace(NamespaceModelItem nam
721721
}
722722
// (should we do this for typeAliases and inner namespaces too?)
723723

724-
pushScope(model_dynamic_cast<ScopeModelItem>(namespace_item));
724+
pushScope(namespace_item.dynamicCast<_ScopeModelItem>());
725725
m_namespace_prefix = currentScope()->qualifiedName().join("::");
726726

727727

@@ -950,9 +950,9 @@ AbstractMetaClass *AbstractMetaBuilder::traverseClass(ClassModelItem class_item)
950950
meta_class->setTemplateArguments(template_args);
951951
meta_class->setHasActualDeclaration(class_item->hasActualDeclaration());
952952

953-
traverseFunctions(model_dynamic_cast<ScopeModelItem>(class_item), meta_class);
954-
traverseEnums(model_dynamic_cast<ScopeModelItem>(class_item), meta_class, class_item->qEnumDeclarations());
955-
traverseFields(model_dynamic_cast<ScopeModelItem>(class_item), meta_class);
953+
traverseFunctions(class_item.dynamicCast<_ScopeModelItem>(), meta_class);
954+
traverseEnums(class_item.dynamicCast<_ScopeModelItem>(), meta_class, class_item->qEnumDeclarations());
955+
traverseFields(class_item.dynamicCast<_ScopeModelItem>(), meta_class);
956956

957957
parseQ_Property(meta_class, class_item->propertyDeclarations());
958958

@@ -1023,7 +1023,7 @@ AbstractMetaField *AbstractMetaBuilder::traverseField(VariableModelItem field, c
10231023
ReportHandler::warning(QString("skipping field '%1::%2' with unmatched type '%3'")
10241024
.arg(m_current_class->name())
10251025
.arg(field_name)
1026-
.arg(TypeInfo::resolveType(field_type, currentScope()->toItem()).qualifiedName().join("::")));
1026+
.arg(TypeInfo::resolveType(field_type, currentScope()).qualifiedName().join("::")));
10271027
delete meta_field;
10281028
return 0;
10291029
}
@@ -1596,7 +1596,7 @@ AbstractMetaType *AbstractMetaBuilder::translateType(const TypeInfo &_typei, boo
15961596
// seemed non-trivial
15971597
int i = m_scopes.size() - 1;
15981598
while (i >= 0) {
1599-
typei = TypeInfo::resolveType(_typei, m_scopes.at(i--)->toItem());
1599+
typei = TypeInfo::resolveType(_typei, m_scopes.at(i--));
16001600
if (typei.qualifiedName().join("::") != _typei.qualifiedName().join("::"))
16011601
break;
16021602
}
@@ -1909,7 +1909,7 @@ bool AbstractMetaBuilder::isQObject(const QString &qualified_name)
19091909

19101910
if (!class_item) {
19111911
QStringList names = qualified_name.split(QLatin1String("::"));
1912-
NamespaceModelItem ns = model_dynamic_cast<NamespaceModelItem>(m_dom);
1912+
NamespaceModelItem ns = m_dom.dynamicCast<_NamespaceModelItem>();
19131913
for (int i=0; i<names.size() - 1 && ns; ++i)
19141914
ns = ns->namespaceMap().value(names.at(i));
19151915
if (ns && names.size() >= 2)
@@ -1934,7 +1934,7 @@ bool AbstractMetaBuilder::isQObject(const QString &qualified_name)
19341934

19351935
bool AbstractMetaBuilder::isEnum(const QStringList &qualified_name)
19361936
{
1937-
CodeModelItem item = m_dom->model()->findItem(qualified_name, m_dom->toItem());
1937+
CodeModelItem item = m_dom->model()->findItem(qualified_name, m_dom);
19381938
return item && item->kind() == _EnumModelItem::__node_kind;
19391939
}
19401940

generator/parser/binder.cpp

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ FileModelItem Binder::run(AST *node)
8282
_M_current_access = CodeModel::Public;
8383

8484
_M_current_file = model()->create<FileModelItem>();
85-
updateItemPosition (_M_current_file->toItem(), node);
85+
updateItemPosition (_M_current_file, node);
8686
visit(node);
8787
FileModelItem result = _M_current_file;
8888

@@ -94,11 +94,11 @@ FileModelItem Binder::run(AST *node)
9494
ScopeModelItem Binder::currentScope() const
9595
{
9696
if (_M_current_class)
97-
return model_static_cast<ScopeModelItem>(_M_current_class);
97+
return _M_current_class.staticCast<_ScopeModelItem>();
9898
else if (_M_current_namespace)
99-
return model_static_cast<ScopeModelItem>(_M_current_namespace);
99+
return _M_current_namespace.staticCast<_ScopeModelItem>();
100100

101-
return model_static_cast<ScopeModelItem>(_M_current_file);
101+
return _M_current_file.staticCast<_ScopeModelItem>();
102102
}
103103

104104
TemplateParameterList Binder::changeTemplateParameters(TemplateParameterList templateParameters)
@@ -278,7 +278,7 @@ void Binder::declare_symbol(SimpleDeclarationAST *node, InitDeclaratorAST *init_
278278
name_cc.run(id->unqualified_name);
279279

280280
FunctionModelItem fun = model()->create<FunctionModelItem>();
281-
updateItemPosition (fun->toItem(), node);
281+
updateItemPosition (fun, node);
282282
fun->setAccessPolicy(_M_current_access);
283283
fun->setFunctionType(_M_current_function_type);
284284
fun->setName(name_cc.name());
@@ -289,7 +289,7 @@ void Binder::declare_symbol(SimpleDeclarationAST *node, InitDeclaratorAST *init_
289289
fun->setException(exceptionSpecToString(declarator->exception_spec));
290290

291291
fun->setTemplateParameters(_M_current_template_parameters);
292-
applyStorageSpecifiers(node->storage_specifiers, model_static_cast<MemberModelItem>(fun));
292+
applyStorageSpecifiers(node->storage_specifiers, fun.staticCast<_MemberModelItem>());
293293
applyFunctionSpecifiers(node->function_specifiers, fun);
294294

295295
if (const ListNode<InitDeclaratorAST*> *it = node->init_declarators)
@@ -335,7 +335,7 @@ void Binder::declare_symbol(SimpleDeclarationAST *node, InitDeclaratorAST *init_
335335
else
336336
{
337337
VariableModelItem var = model()->create<VariableModelItem>();
338-
updateItemPosition (var->toItem(), node);
338+
updateItemPosition (var, node);
339339
var->setTemplateParameters(_M_current_template_parameters);
340340
var->setAccessPolicy(_M_current_access);
341341
name_cc.run(id->unqualified_name);
@@ -353,7 +353,7 @@ void Binder::declare_symbol(SimpleDeclarationAST *node, InitDeclaratorAST *init_
353353
}
354354

355355
var->setType(qualifyType(typeInfo, _M_context));
356-
applyStorageSpecifiers(node->storage_specifiers, model_static_cast<MemberModelItem>(var));
356+
applyStorageSpecifiers(node->storage_specifiers, var.staticCast<_MemberModelItem>());
357357

358358
var->setScope(symbolScope->qualifiedName());
359359
symbolScope->addVariable(var);
@@ -372,7 +372,7 @@ void Binder::visitFunctionDefinition(FunctionDefinitionAST *node)
372372
// check if this function declaration is a "friend" function with implementation body.
373373
// In this case we modify the scope, and remove the "friend" flag later on.
374374
friendWithDefinition = true;
375-
scope = model_static_cast<ScopeModelItem>(_M_current_file);
375+
scope = _M_current_file.staticCast<_ScopeModelItem>();
376376
}
377377

378378
InitDeclaratorAST *init_declarator = node->init_declarator;
@@ -433,7 +433,7 @@ void Binder::visitFunctionDefinition(FunctionDefinitionAST *node)
433433
FunctionDefinitionModelItem
434434
old = changeCurrentFunction(_M_model->create<FunctionDefinitionModelItem>());
435435
_M_current_function->setScope(functionScope->qualifiedName());
436-
updateItemPosition (_M_current_function->toItem(), node);
436+
updateItemPosition (_M_current_function, node);
437437

438438
Q_ASSERT(declarator->id->unqualified_name != 0);
439439
name_cc.run(declarator->id->unqualified_name);
@@ -451,12 +451,12 @@ void Binder::visitFunctionDefinition(FunctionDefinitionAST *node)
451451
_M_current_function->setException(exceptionSpecToString(declarator->exception_spec));
452452

453453
applyStorageSpecifiers(node->storage_specifiers,
454-
model_static_cast<MemberModelItem>(_M_current_function));
454+
_M_current_function.staticCast<_MemberModelItem>());
455455
applyFunctionSpecifiers(node->function_specifiers,
456-
model_static_cast<FunctionModelItem>(_M_current_function));
456+
_M_current_function.staticCast<_FunctionModelItem>());
457457
if (node->init_declarator->declarator && node->init_declarator->declarator->_override) {
458458
//std::cout << unqualified_name.toLatin1().constData() << std::endl;
459-
model_static_cast<FunctionModelItem>(_M_current_function)->setVirtual(true);
459+
_M_current_function.staticCast<_FunctionModelItem>()->setVirtual(true);
460460
}
461461

462462
if (friendWithDefinition)
@@ -493,7 +493,7 @@ void Binder::visitFunctionDefinition(FunctionDefinitionAST *node)
493493

494494
functionScope->addFunctionDefinition(_M_current_function);
495495

496-
FunctionModelItem prototype = model_static_cast<FunctionModelItem>(_M_current_function);
496+
FunctionModelItem prototype = _M_current_function.staticCast<_FunctionModelItem>();
497497
FunctionModelItem declared = functionScope->declaredFunction(prototype);
498498

499499
// try to find a function declaration for this definition..
@@ -506,7 +506,7 @@ void Binder::visitFunctionDefinition(FunctionDefinitionAST *node)
506506
applyFunctionSpecifiers(node->function_specifiers, declared);
507507
if (node->init_declarator->declarator && node->init_declarator->declarator->_override) {
508508
//std::cout << unqualified_name.toLatin1().constData() << std::endl;
509-
model_static_cast<FunctionModelItem>(_M_current_function)->setVirtual(true);
509+
_M_current_function.staticCast<_FunctionModelItem>()->setVirtual(true);
510510
}
511511

512512
// fix the function type and the access policy
@@ -647,7 +647,7 @@ void Binder::visitTypedef(TypedefAST *node)
647647
ScopeModelItem typedefScope = finder.resolveScope(declarator->id, scope);
648648

649649
TypeAliasModelItem typeAlias = model ()->create<TypeAliasModelItem> ();
650-
updateItemPosition (typeAlias->toItem (), node);
650+
updateItemPosition (typeAlias, node);
651651
typeAlias->setName (alias_name);
652652
typeAlias->setType (qualifyType (typeInfo, currentScope ()->qualifiedName ()));
653653
typeAlias->setScope (typedefScope->qualifiedName());
@@ -670,13 +670,12 @@ void Binder::visitNamespace(NamespaceAST *node)
670670

671671
QStringList qualified_name = scope->qualifiedName();
672672
qualified_name += name;
673-
NamespaceModelItem ns =
674-
model_safe_cast<NamespaceModelItem>(_M_model->findItem(qualified_name,
675-
_M_current_file->toItem()));
673+
NamespaceModelItem ns = (_M_model->findItem(qualified_name,_M_current_file))
674+
.dynamicCast<_NamespaceModelItem>();
676675
if (!ns)
677676
{
678677
ns = _M_model->create<NamespaceModelItem>();
679-
updateItemPosition (ns->toItem(), node);
678+
updateItemPosition (ns, node);
680679
ns->setName(name);
681680
ns->setScope(scope->qualifiedName());
682681
}
@@ -694,7 +693,7 @@ void Binder::visitNamespace(NamespaceAST *node)
694693

695694
_M_context.removeLast();
696695

697-
if (NamespaceModelItem ns = model_static_cast<NamespaceModelItem>(scope))
696+
if (NamespaceModelItem ns = scope.staticCast<_NamespaceModelItem>())
698697
{
699698
ns->addNamespace(_M_current_namespace);
700699
}
@@ -729,7 +728,7 @@ void Binder::visitClassSpecifier(ClassSpecifierAST *node)
729728
ScopeModelItem scope = currentScope();
730729

731730
ClassModelItem old = changeCurrentClass(_M_model->create<ClassModelItem>());
732-
updateItemPosition (_M_current_class->toItem(), node);
731+
updateItemPosition (_M_current_class, node);
733732
_M_current_class->setName(class_cc.name());
734733

735734
QStringList baseClasses = class_cc.baseClasses(); TypeInfo info;
@@ -809,7 +808,7 @@ void Binder::visitEnumSpecifier(EnumSpecifierAST *node)
809808
_M_current_enum = model()->create<EnumModelItem>();
810809
_M_current_enum->setAccessPolicy(_M_current_access);
811810
_M_current_enum->setEnumClass(node->is_enum_class);
812-
updateItemPosition (_M_current_enum->toItem(), node);
811+
updateItemPosition (_M_current_enum, node);
813812
_M_current_enum->setName(name);
814813
_M_current_enum->setScope(enumScope->qualifiedName());
815814

@@ -837,7 +836,7 @@ void Binder::visitEnumerator(EnumeratorAST *node)
837836
{
838837
Q_ASSERT(_M_current_enum.data() != 0);
839838
EnumeratorModelItem e = model()->create<EnumeratorModelItem>();
840-
updateItemPosition (e->toItem(), node);
839+
updateItemPosition (e, node);
841840
e->setName(decode_symbol(node->id)->as_string());
842841

843842
if (ExpressionAST *expr = node->expression)
@@ -1013,9 +1012,9 @@ TypeInfo Binder::qualifyType(const TypeInfo &type, const QStringList &context) c
10131012
}
10141013
else
10151014
{
1016-
CodeModelItem scope = model ()->findItem (context, _M_current_file->toItem ());
1015+
CodeModelItem scope = model ()->findItem (context, _M_current_file);
10171016

1018-
if (ClassModelItem klass = model_dynamic_cast<ClassModelItem> (scope))
1017+
if (ClassModelItem klass = scope.dynamicCast<_ClassModelItem> ())
10191018
{
10201019
foreach (QString base, klass->baseClasses ())
10211020
{

generator/parser/codemodel.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,15 +99,15 @@ CodeModelItem CodeModel::findItem(const QStringList &qualifiedName, CodeModelIte
9999
// ### Extend to look for members etc too.
100100
const QString &name = qualifiedName.at(i);
101101

102-
if (NamespaceModelItem ns = model_dynamic_cast<NamespaceModelItem>(scope))
102+
if (NamespaceModelItem ns = scope.dynamicCast<_NamespaceModelItem>())
103103
{
104104
if (NamespaceModelItem tmp_ns = ns->findNamespace(name)) {
105105
scope = tmp_ns;
106106
continue;
107107
}
108108
}
109109

110-
if (ScopeModelItem ss = model_dynamic_cast<ScopeModelItem>(scope))
110+
if (ScopeModelItem ss = scope.dynamicCast<_ScopeModelItem>())
111111
{
112112
if (ClassModelItem cs = ss->findClass(name))
113113
{
@@ -116,12 +116,12 @@ CodeModelItem CodeModel::findItem(const QStringList &qualifiedName, CodeModelIte
116116
else if (EnumModelItem es = ss->findEnum(name))
117117
{
118118
if (i == qualifiedName.size () - 1)
119-
return es->toItem();
119+
return es;
120120
}
121121
else if (TypeAliasModelItem tp = ss->findTypeAlias(name))
122122
{
123123
if (i == qualifiedName.size () - 1)
124-
return tp->toItem ();
124+
return tp;
125125
}
126126
else
127127
{
@@ -169,7 +169,7 @@ TypeInfo TypeInfo::resolveType (TypeInfo const &__type, CodeModelItem __scope)
169169
otherType.setQualifiedName(__item->qualifiedName());
170170
}
171171

172-
if (TypeAliasModelItem __alias = model_dynamic_cast<TypeAliasModelItem> (__item))
172+
if (TypeAliasModelItem __alias = __item.dynamicCast<_TypeAliasModelItem>())
173173
return resolveType (TypeInfo::combine (__alias->type (), otherType), __scope);
174174

175175
return otherType;

generator/parser/codemodel.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ class _NamespaceModelItem: public _ScopeModelItem
403403

404404
NamespaceModelItem findNamespace(const QString &name) const;
405405

406-
inline QHash<QString, NamespaceModelItem> namespaceMap() const { return _M_namespaces; };
406+
inline QHash<QString, NamespaceModelItem> namespaceMap() const { return _M_namespaces; }
407407

408408
protected:
409409
_NamespaceModelItem(CodeModel *model, int kind = __node_kind)

generator/parser/codemodel_finder.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,15 @@ void CodeModelFinder::visitUnqualifiedName(UnqualifiedNameAST *node)
106106
{
107107
_M_current_scope = klass;
108108
}
109-
else if (NamespaceModelItem parentNamespace = model_safe_cast<NamespaceModelItem>(_M_current_scope))
109+
else if (NamespaceModelItem parentNamespace = _M_current_scope.dynamicCast<_NamespaceModelItem>())
110110
{
111111
NamespaceModelItem ns = parentNamespace->findNamespace(id);
112-
_M_current_scope = model_static_cast<ScopeModelItem>(ns);
112+
_M_current_scope = ns.staticCast<_ScopeModelItem>();
113113
}
114-
else if (FileModelItem file = model_safe_cast<FileModelItem>(_M_current_scope))
114+
else if (FileModelItem file = _M_current_scope.dynamicCast<_FileModelItem>())
115115
{
116116
NamespaceModelItem ns = file->findNamespace(id);
117-
_M_current_scope = model_static_cast<ScopeModelItem>(ns);
117+
_M_current_scope = ns.staticCast<_ScopeModelItem>();
118118
}
119119
}
120120

generator/parser/name_compiler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ void NameCompiler::visitTemplateArgument(TemplateArgumentAST *node)
138138
q = tp.qualifiedName ();
139139
#endif
140140

141-
if (CodeModelItem item = _M_binder->model ()->findItem (q, _M_binder->currentScope ()->toItem ()))
141+
if (CodeModelItem item = _M_binder->model ()->findItem (q, _M_binder->currentScope ()))
142142
{
143143
if (item->name () == q.last ())
144144
q = item->qualifiedName ();

0 commit comments

Comments
 (0)