32 const ClassList cllist = dom->classList();
33 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
39 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
48 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
52 const ClassList cllist = dom->classList();
53 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
59 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
68 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
72 const ClassList cllist = dom->classList();
73 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
79 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
82 relations[*it].ns = dom;
88 const ClassList cllist = dom->classList();
89 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
95 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
98 relations[*it].klass = dom;
104 const ClassList cllist = dom->classList();
105 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
111 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
114 relations[*it].klass = dom;
115 relations[*it].ns = nsdom;
123 namespace FunctionDefinitions
128 const ClassList cllist = dom->classList();
129 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
135 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
144 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
148 const ClassList cllist = dom->classList();
149 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
155 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
164 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
168 const ClassList cllist = dom->classList();
169 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
175 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
178 relations[*it].ns = dom;
184 const ClassList cllist = dom->classList();
185 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
191 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
194 relations[*it].klass = dom;
200 const ClassList cllist = dom->classList();
201 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
207 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
210 relations[*it].klass = dom;
211 relations[*it].ns = nsdom;
221 using namespace Functions;
225 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
230 const ClassList cllist = dom->classList();
231 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
237 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
247 using namespace Functions;
251 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
256 const ClassList cllist = dom->classList();
257 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
263 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
273 using namespace FunctionDefinitions;
277 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
282 const ClassList cllist = dom->classList();
283 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
289 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
299 if( !def->resultType().contains(
"::") )
return dec->resultType() == def->resultType();
300 TQStringList l1 = dec->scope() + TQStringList::split(
"::", dec->resultType() );
301 TQStringList l2 = TQStringList::split(
"::", def->resultType() );
303 if( l1.isEmpty() || l2.isEmpty() || l1.back() != l2.back() )
return false;
305 while( !l1.isEmpty() && !l2.isEmpty() ) {
306 if( l1.back() == l2.back() ) {
314 if( l2.isEmpty() )
return true;
322 if (dec->scope() == def->scope() && dec->name() == def->name() && resultTypesFit( dec, def ) && dec->isConstant() == def->isConstant())
324 const ArgumentList defList = def->argumentList(), decList = dec->argumentList();
325 if (defList.size() != decList.size())
328 size_t n = defList.size();
329 for(
size_t i = 0; i < n; ++i)
330 if (defList[i]->type() != decList[i]->type())
341 if (dec->name() == def->name() && resultTypesFit( dec, def ) && dec->isConstant() == def->isConstant())
343 const ArgumentList defList = def->argumentList(), decList = dec->argumentList();
344 if (defList.size() != decList.size())
347 size_t n = defList.size();
348 for(
size_t i = 0; i < n; ++i)
349 if (defList[i]->type() != decList[i]->type())
352 const TQStringList &defScope = def->scope(), &decScope = dec->scope();
353 if (defScope != decScope)
355 if (defScope.size() >= decScope.size())
359 for(
size_t i1 = 0, i2 = 0; i1 < n; ++i1)
361 if (i2 >= defScope.size() || decScope[i1] != defScope[i2])
363 NamespaceImportModel model;
364 model.setName(decScope[i1]);
365 model.setFileName(def->fileName());
366 if (nsImports.find(model) == nsImports.end())
384 PredAmOwner<FunctionDom> ow( dom );
394 PredAmOwner<FunctionDefinitionDom> ow( dom );
410 for (NamespaceList::iterator i = nsList.begin(); i != nsList.end(); ++i)
418 for(ClassList::iterator i = classes.begin(); i != classes.end(); ++i)
434 for(ClassList::iterator i = classes.begin(); i != classes.end(); ++i)
441 int startLine, startCol;
444 if (startLine <= line)
459 const FunctionList functionList = aClass->functionList();
460 for( FunctionList::ConstIterator it=functionList.begin(); it!=functionList.end(); ++it )
462 int funEndLine, funEndColumn;
463 (*it)->getEndPosition( &funEndLine, &funEndColumn );
465 if ((*it)->access() == access && point < funEndLine)
477 for( VariableList::ConstIterator it= varList.begin(); it!= varList.end(); ++it )
479 int varEndLine, varEndColumn;
480 (*it)->getEndPosition( &varEndLine, &varEndColumn );
482 if ((*it)->access() == access && point < varEndLine)
496 default:
return "unknown";
503 NamespaceList::iterator nslEnd = namespaceList.end();
505 for (NamespaceList::iterator it=namespaceList.begin(); it!=nslEnd; ++it)
512 ClassList::iterator clEnd = classList.end();
514 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
521 FunctionDefinitionList::iterator fdlEnd = functionDefinitionList.end();
523 for (FunctionDefinitionList::iterator it=functionDefinitionList.begin();
535 ClassList classList = klass->classList();
536 ClassList::iterator clEnd = classList.end();
538 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
545 FunctionDefinitionList::iterator fdlEnd = functionDefinitionList.end();
546 for (FunctionDefinitionList::Iterator it=functionDefinitionList.begin();
559 int startLine, startColumn;
560 int endLine, endColumn;
562 fun->getStartPosition(&startLine, &startColumn);
563 fun->getEndPosition(&endLine, &endColumn);
565 if (!(line >= startLine && line <= endLine) || fun->fileName() != m_fileName )
583 NamespaceList::iterator nsEnd = namespaceList.end();
584 for (NamespaceList::iterator it=namespaceList.begin(); it!=nsEnd; ++it)
586 if (
FunctionDom def = functionDeclarationAt(*it, line, column))
591 ClassList::iterator clEnd = classList.end();
592 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
594 if (
FunctionDom def = functionDeclarationAt(*it, line, column))
599 FunctionList::iterator flEnd = functionList.end();
600 for (FunctionList::iterator it=functionList.begin();
603 if (
FunctionDom def = functionDeclarationAt(*it, line, column))
612 ClassList classList = klass->classList();
613 ClassList::iterator clEnd = classList.end();
614 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
616 if (
FunctionDom def = functionDeclarationAt(*it, line, column))
621 FunctionList::iterator flEnd = functionList.end();
622 for (FunctionList::Iterator it=functionList.begin();
625 if (
FunctionDom def = functionDeclarationAt(*it, line, column))
635 int startLine, startColumn;
636 int endLine, endColumn;
638 fun->getStartPosition(&startLine, &startColumn);
639 fun->getEndPosition(&endLine, &endColumn);
641 if (!(line >= startLine && line <= endLine) || fun->fileName() != m_fileName )
660 NamespaceList::iterator nsEnd = namespaceList.end();
662 for (NamespaceList::iterator it=namespaceList.begin(); it!=nsEnd; ++it)
664 if (
ClassDom def = classAt(*it, line, column))
669 ClassList::iterator clEnd = classList.end();
670 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
672 if (
ClassDom def = classAt(*it, line, column))
681 ClassList classList = klass->classList();
682 ClassList::iterator clEnd = classList.end();
683 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
685 if (
ClassDom def = classAt(*it, line, column))
689 int startLine, startColumn;
690 int endLine, endColumn;
692 klass->getStartPosition(&startLine, &startColumn);
693 klass->getEndPosition(&endLine, &endColumn);
695 if (!(line >= startLine && line <= endLine) || klass->fileName() != m_fileName )
702 CodeModelHelper::CodeModelHelper(
CodeModel* model,
FileDom file ) : m_model( model ) {
704 m_files = file->wholeGroup();
705 m_fileName = file->name();
709 FunctionDom CodeModelHelper::functionAt(
int line,
int column, FunctionTypes types ) {
714 FileList::iterator it = m_files.begin();
715 while( it != m_files.end() ) {
716 if( types & Declaration ) {
717 ret = functionDeclarationAt(model_cast<NamespaceDom>(*it), line, column);
720 if( types & Definition ) {
733 ClassDom CodeModelHelper::classAt(
int line,
int column ) {
734 if( m_files.isEmpty() )
return ClassDom();
737 FileList::iterator it = m_files.begin();
738 while( it != m_files.end() ) {
739 ret = classAt( model_cast<NamespaceDom>(*it), line, column );
AllFunctions allFunctionsDetailed(const FileDom &dom)
int findLastMethodLine(ClassDom aClass, CodeModelItem::Access access)
Finds the last occurrence (line of file wise) of a method inside a class declaration with specific ac...
FunctionDefinitionList allFunctionDefinitionsExhaustive(FileDom &dom)
The list of code model arguments.
FunctionList functionList
List of functions.
TQMap< FunctionDom, Scope > relations
Scope of functions.
AllFunctionDefinitions allFunctionDefinitionsDetailed(const FileDom &dom)
FunctionList allFunctionsExhaustive(FileDom &dom)
void findFunctionDefinitions(Pred pred, const FileList &fileList, FunctionDefinitionList &lst)
Finds function definitions which match given predicate in files.
Utility functions and classes for the CodeModel.
FunctionDefinitionList functionList
List of function definitions.
Information about function definitions.
Result model_cast(TDESharedPtr< T > x)
Casts safe code model pointers (TDESharedPtr<T> objects like FileDom, NamespaceDom, etc.) to the Result type.
The list of code model namespaces.
void processNamespaces(FunctionList &list, const NamespaceDom dom)
Looks for functions in the namespace.
The list of code model variables.
The list of code model function definitions.
TQString accessSpecifierToString(CodeModelItem::Access access)
Get the string representation of an accesss pecifier.
int findLastVariableLine(ClassDom aClass, CodeModelItem::Access access)
Same as above, but finds a membervariable instead of a method.
ClassDom findClassByPosition(NamespaceModel *nameSpace, int line, int col)
Finds a class by its position in a file(position inside the part of the file, where the class is decl...
The list of code model classes.
Information about functions.
void getStartPosition(int *line, int *col) const
Gets the start position of the item.
Safe pointer to the FunctionModel.
Access
An access to the code model item.
Safe pointer to the ClassModel.
TQMap< FunctionDefinitionDom, Scope > relations
Scope of function definitions.
Code Model - a memory symbol store.
void findFunctionDeclarations(Pred pred, const FileList &fileList, FunctionList &lst)
Finds function declarations which match given predicate in files.
Safe pointer to the FunctionDefinitionModel.
Safe pointer to the FileModel.
Namespace which contains utility functions and classes for the CodeModel.
FunctionList allFunctions(const FileDom &dom)
Safe pointer to the NamespaceModel.
The list of code model functions.
bool compareDeclarationToDefinition(const FunctionDom &dec, const FunctionDefinitionDom &def)
Compares a declaration and a defintion of a function.
void processClasses(FunctionList &list, const ClassDom dom)
Looks for functions in the class.
NamespaceList namespaceList()
void getEndPosition(int *line, int *col) const
Get the end position of the item.