• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • TDevelop Interfaces Library
 

TDevelop Interfaces Library

  • lib
  • interfaces
codemodel_utils.cpp
1/* This file is part of TDevelop
2 Copyright (C) 2003 Roberto Raggi <roberto@kdevelop.org>
3 Copyright (C) 2003 Alexander Dymo <adymo@kdevelop.org>
4 Copyright (C) 2004 Jonas Jacobi <j.jacobi@gmx.de>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20*/
21
22#include "codemodel_utils.h"
23
24namespace CodeModelUtils
25{
26
27namespace Functions
28{
29
30void processClasses(FunctionList &list, const ClassDom dom)
31{
32 const ClassList cllist = dom->classList();
33 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
34 {
35 processClasses(list, *it);
36 }
37
38 const FunctionList fnlist = dom->functionList();
39 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
40 {
41 list.append(*it);
42 }
43}
44
45void processNamespaces(FunctionList &list, const NamespaceDom dom)
46{
47 const NamespaceList nslist = dom->namespaceList();
48 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
49 {
50 processNamespaces(list, *it);
51 }
52 const ClassList cllist = dom->classList();
53 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
54 {
55 processClasses(list, *it);
56 }
57
58 const FunctionList fnlist = dom->functionList();
59 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
60 {
61 list.append(*it);
62 }
63}
64
65void processNamespaces( FunctionList & list, const NamespaceDom dom, TQMap< FunctionDom, Scope > & relations )
66{
67 const NamespaceList nslist = dom->namespaceList();
68 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
69 {
70 processNamespaces(list, *it, relations);
71 }
72 const ClassList cllist = dom->classList();
73 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
74 {
75 processClasses(list, *it, relations, dom);
76 }
77
78 const FunctionList fnlist = dom->functionList();
79 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
80 {
81 list.append(*it);
82 relations[*it].ns = dom;
83 }
84}
85
86void processClasses( FunctionList & list, const ClassDom dom, TQMap< FunctionDom, Scope > & relations )
87{
88 const ClassList cllist = dom->classList();
89 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
90 {
91 processClasses(list, *it, relations);
92 }
93
94 const FunctionList fnlist = dom->functionList();
95 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
96 {
97 list.append(*it);
98 relations[*it].klass = dom;
99 }
100}
101
102void processClasses( FunctionList & list, const ClassDom dom, TQMap< FunctionDom, Scope > & relations, const NamespaceDom & nsdom )
103{
104 const ClassList cllist = dom->classList();
105 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
106 {
107 processClasses(list, *it, relations, nsdom);
108 }
109
110 const FunctionList fnlist = dom->functionList();
111 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
112 {
113 list.append(*it);
114 relations[*it].klass = dom;
115 relations[*it].ns = nsdom;
116 }
117}
118
119} // end of Functions namespace
120
121
122
123namespace FunctionDefinitions
124{
125
126void processClasses(FunctionDefinitionList &list, const ClassDom dom)
127{
128 const ClassList cllist = dom->classList();
129 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
130 {
131 processClasses(list, *it);
132 }
133
134 const FunctionDefinitionList fnlist = dom->functionDefinitionList();
135 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
136 {
137 list.append(*it);
138 }
139}
140
141void processNamespaces(FunctionDefinitionList &list, const NamespaceDom dom)
142{
143 const NamespaceList nslist = dom->namespaceList();
144 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
145 {
146 processNamespaces(list, *it);
147 }
148 const ClassList cllist = dom->classList();
149 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
150 {
151 processClasses(list, *it);
152 }
153
154 const FunctionDefinitionList fnlist = dom->functionDefinitionList();
155 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
156 {
157 list.append(*it);
158 }
159}
160
161void processNamespaces( FunctionDefinitionList & list, const NamespaceDom dom, TQMap< FunctionDefinitionDom, Scope > & relations )
162{
163 const NamespaceList nslist = dom->namespaceList();
164 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
165 {
166 processNamespaces(list, *it, relations);
167 }
168 const ClassList cllist = dom->classList();
169 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
170 {
171 processClasses(list, *it, relations, dom);
172 }
173
174 const FunctionDefinitionList fnlist = dom->functionDefinitionList();
175 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
176 {
177 list.append(*it);
178 relations[*it].ns = dom;
179 }
180}
181
182void processClasses( FunctionDefinitionList & list, const ClassDom dom, TQMap< FunctionDefinitionDom, Scope > & relations )
183{
184 const ClassList cllist = dom->classList();
185 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
186 {
187 processClasses(list, *it, relations);
188 }
189
190 const FunctionDefinitionList fnlist = dom->functionDefinitionList();
191 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
192 {
193 list.append(*it);
194 relations[*it].klass = dom;
195 }
196}
197
198void processClasses( FunctionDefinitionList & list, const ClassDom dom, TQMap< FunctionDefinitionDom, Scope > & relations, const NamespaceDom & nsdom )
199{
200 const ClassList cllist = dom->classList();
201 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
202 {
203 processClasses(list, *it, relations, nsdom);
204 }
205
206 const FunctionDefinitionList fnlist = dom->functionDefinitionList();
207 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
208 {
209 list.append(*it);
210 relations[*it].klass = dom;
211 relations[*it].ns = nsdom;
212 }
213}
214
215} // end of FunctionDefinitions namespace
216
217
218
219FunctionList allFunctions(const FileDom &dom)
220{
221 using namespace Functions;
222 FunctionList list;
223
224 const NamespaceList nslist = dom->namespaceList();
225 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
226 {
227 processNamespaces(list, *it);
228 }
229
230 const ClassList cllist = dom->classList();
231 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
232 {
233 processClasses(list, *it);
234 }
235
236 const FunctionList fnlist = dom->functionList();
237 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
238 {
239 list.append(*it);
240 }
241
242 return list;
243}
244
245AllFunctions allFunctionsDetailed( const FileDom & dom )
246{
247 using namespace Functions;
248 AllFunctions list;
249
250 const NamespaceList nslist = dom->namespaceList();
251 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
252 {
253 processNamespaces(list.functionList, *it, list.relations);
254 }
255
256 const ClassList cllist = dom->classList();
257 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
258 {
259 processClasses(list.functionList, *it, list.relations);
260 }
261
262 const FunctionList fnlist = dom->functionList();
263 for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
264 {
265 list.functionList.append(*it);
266 }
267
268 return list;
269}
270
271AllFunctionDefinitions allFunctionDefinitionsDetailed( const FileDom & dom )
272{
273 using namespace FunctionDefinitions;
274 AllFunctionDefinitions list;
275
276 const NamespaceList nslist = dom->namespaceList();
277 for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
278 {
279 processNamespaces(list.functionList, *it, list.relations);
280 }
281
282 const ClassList cllist = dom->classList();
283 for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
284 {
285 processClasses(list.functionList, *it, list.relations);
286 }
287
288 const FunctionDefinitionList fnlist = dom->functionDefinitionList();
289 for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
290 {
291 list.functionList.append(*it);
292 }
293
294 return list;
295}
296
297
298bool resultTypesFit( const FunctionDom & dec, const FunctionDefinitionDom & def ) {
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() );
302
303 if( l1.isEmpty() || l2.isEmpty() || l1.back() != l2.back() ) return false;
304
305 while( !l1.isEmpty() && !l2.isEmpty() ) {
306 if( l1.back() == l2.back() ) {
307 l1.pop_back();
308 l2.pop_back();
309 } else {
310 l1.pop_back();
311 }
312 }
313
314 if( l2.isEmpty() ) return true;
315
316 return false;
317}
318
319
320bool compareDeclarationToDefinition( const FunctionDom & dec, const FunctionDefinitionDom & def )
321{
322 if (dec->scope() == def->scope() && dec->name() == def->name() && resultTypesFit( dec, def ) && dec->isConstant() == def->isConstant())
323 {
324 const ArgumentList defList = def->argumentList(), decList = dec->argumentList();
325 if (defList.size() != decList.size())
326 return false;
327
328 size_t n = defList.size();
329 for(size_t i = 0; i < n; ++i)
330 if (defList[i]->type() != decList[i]->type())
331 return false;
332
333 return true;
334 }
335 return false;
336}
337
338
339bool compareDeclarationToDefinition( const FunctionDom & dec, const FunctionDefinitionDom & def, const std::set<NamespaceImportModel> & nsImports )
340{
341 if (dec->name() == def->name() && resultTypesFit( dec, def ) && dec->isConstant() == def->isConstant())
342 {
343 const ArgumentList defList = def->argumentList(), decList = dec->argumentList();
344 if (defList.size() != decList.size())
345 return false;
346
347 size_t n = defList.size();
348 for(size_t i = 0; i < n; ++i)
349 if (defList[i]->type() != decList[i]->type())
350 return false;
351
352 const TQStringList &defScope = def->scope(), &decScope = dec->scope();
353 if (defScope != decScope)
354 {
355 if (defScope.size() >= decScope.size())
356 return false;
357
358 n = decScope.size();
359 for(size_t i1 = 0, i2 = 0; i1 < n; ++i1)
360 {
361 if (i2 >= defScope.size() || decScope[i1] != defScope[i2])
362 {
363 NamespaceImportModel model;
364 model.setName(decScope[i1]);
365 model.setFileName(def->fileName());
366 if (nsImports.find(model) == nsImports.end())
367 return false;
368 }
369 else
370 {
371 ++i2;
372 }
373 }
374 }
375
376 return true;
377 }
378 return false;
379}
380
381
382
383FunctionList allFunctionsExhaustive(FileDom &dom) {
384 PredAmOwner<FunctionDom> ow( dom );
385 FunctionList ret;
386
387 findFunctionDeclarations( ow, dom->wholeGroup(), ret );
388
389 return ret;
390}
391
392
393FunctionDefinitionList allFunctionDefinitionsExhaustive(FileDom &dom) {
394 PredAmOwner<FunctionDefinitionDom> ow( dom );
395 FunctionDefinitionList ret;
396
397 findFunctionDefinitions( ow, dom->wholeGroup(), ret );
398
399 return ret;
400}
401
402
403
404ClassDom findClassByPosition( NamespaceModel* nameSpace, int line, int col )
405{
406 if (nameSpace == 0)
407 return 0;
408
409 NamespaceList nsList = nameSpace->namespaceList();
410 for (NamespaceList::iterator i = nsList.begin(); i != nsList.end(); ++i)
411 {
412 ClassDom result = findClassByPosition(*i, line, col);
413 if (result != 0)
414 return result;
415 }
416
417 ClassList classes = nameSpace->classList();
418 for(ClassList::iterator i = classes.begin(); i != classes.end(); ++i)
419 {
420 ClassDom result = findClassByPosition( *i, line, col );
421 if (result != 0)
422 return result;
423 }
424
425 return 0;
426}
427
428ClassDom findClassByPosition( ClassModel* aClass, int line, int col )
429{
430 if (aClass == 0)
431 return 0;
432
433 ClassList classes = aClass->classList();
434 for(ClassList::iterator i = classes.begin(); i != classes.end(); ++i)
435 {
436 ClassDom result = findClassByPosition( *i, line, col );
437 if (result != 0)
438 return result;
439 }
440
441 int startLine, startCol;
442 aClass->getStartPosition(&startLine, &startCol);
443
444 if (startLine <= line)
445 {
446 int endLine, endCol;
447 aClass->getEndPosition(&endLine, &endCol);
448 if (endLine >= line)
449 return (aClass);
450 }
451
452 return 0;
453}
454
455int findLastMethodLine( ClassDom aClass, CodeModelItem::Access access )
456{
457 int point = -1;
458
459 const FunctionList functionList = aClass->functionList();
460 for( FunctionList::ConstIterator it=functionList.begin(); it!=functionList.end(); ++it )
461 {
462 int funEndLine, funEndColumn;
463 (*it)->getEndPosition( &funEndLine, &funEndColumn );
464
465 if ((*it)->access() == access && point < funEndLine)
466 point = funEndLine;
467 }
468
469 return point;
470}
471
472int findLastVariableLine( ClassDom aClass, CodeModelItem::Access access )
473{
474 int point = -1;
475
476 const VariableList varList = aClass->variableList();
477 for( VariableList::ConstIterator it= varList.begin(); it!= varList.end(); ++it )
478 {
479 int varEndLine, varEndColumn;
480 (*it)->getEndPosition( &varEndLine, &varEndColumn );
481
482 if ((*it)->access() == access && point < varEndLine)
483 point = varEndLine;
484 }
485
486 return point;
487}
488
489TQString accessSpecifierToString( CodeModelItem::Access access )
490{
491 switch(access)
492 {
493 case CodeModelItem::Public: return "public";
494 case CodeModelItem::Protected: return "protected";
495 case CodeModelItem::Private: return "private";
496 default: return "unknown";
497 }
498}
499
500FunctionDefinitionDom CodeModelHelper::functionDefinitionAt(NamespaceDom ns, int line, int column)
501{
502 NamespaceList namespaceList = ns->namespaceList();
503 NamespaceList::iterator nslEnd = namespaceList.end();
504
505 for (NamespaceList::iterator it=namespaceList.begin(); it!=nslEnd; ++it)
506 {
507 if (FunctionDefinitionDom def = functionDefinitionAt(*it, line, column))
508 return def;
509 }
510
511 ClassList classList = ns->classList();
512 ClassList::iterator clEnd = classList.end();
513
514 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
515 {
516 if (FunctionDefinitionDom def = functionDefinitionAt(*it, line, column))
517 return def;
518 }
519
520 FunctionDefinitionList functionDefinitionList = ns->functionDefinitionList();
521 FunctionDefinitionList::iterator fdlEnd = functionDefinitionList.end();
522
523 for (FunctionDefinitionList::iterator it=functionDefinitionList.begin();
524 it!=fdlEnd; ++it )
525 {
526 if (FunctionDefinitionDom def = functionDefinitionAt(*it, line, column))
527 return def;
528 }
529
530 return FunctionDefinitionDom();
531}
532
533FunctionDefinitionDom CodeModelHelper::functionDefinitionAt(ClassDom klass, int line, int column)
534{
535 ClassList classList = klass->classList();
536 ClassList::iterator clEnd = classList.end();
537
538 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
539 {
540 if (FunctionDefinitionDom def = functionDefinitionAt(*it, line, column))
541 return def;
542 }
543
544 FunctionDefinitionList functionDefinitionList = klass->functionDefinitionList();
545 FunctionDefinitionList::iterator fdlEnd = functionDefinitionList.end();
546 for (FunctionDefinitionList::Iterator it=functionDefinitionList.begin();
547 it!=fdlEnd; ++it)
548 {
549 if (FunctionDefinitionDom def = functionDefinitionAt(*it, line, column))
550 return def;
551 }
552
553 return FunctionDefinitionDom();
554}
555
556FunctionDefinitionDom CodeModelHelper::functionDefinitionAt(FunctionDefinitionDom fun, int line, int // column
557 )
558{
559 int startLine, startColumn;
560 int endLine, endColumn;
561
562 fun->getStartPosition(&startLine, &startColumn);
563 fun->getEndPosition(&endLine, &endColumn);
564
565 if (!(line >= startLine && line <= endLine) || fun->fileName() != m_fileName )
566 return FunctionDefinitionDom();
567
568 /*
569 if (line == startLine && column < startColumn)
570 return FunctionDefinitionDom();
571
572 if (line == endLine && column > endColumn)
573 return FunctionDefinitionDom();*/
574
575 return fun;
576}
577
578
579
580FunctionDom CodeModelHelper::functionDeclarationAt(NamespaceDom ns, int line, int column)
581{
582 NamespaceList namespaceList = ns->namespaceList();
583 NamespaceList::iterator nsEnd = namespaceList.end();
584 for (NamespaceList::iterator it=namespaceList.begin(); it!=nsEnd; ++it)
585 {
586 if (FunctionDom def = functionDeclarationAt(*it, line, column))
587 return def;
588 }
589
590 ClassList classList = ns->classList();
591 ClassList::iterator clEnd = classList.end();
592 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
593 {
594 if (FunctionDom def = functionDeclarationAt(*it, line, column))
595 return def;
596 }
597
598 FunctionList functionList = ns->functionList();
599 FunctionList::iterator flEnd = functionList.end();
600 for (FunctionList::iterator it=functionList.begin();
601 it!=flEnd; ++it )
602 {
603 if (FunctionDom def = functionDeclarationAt(*it, line, column))
604 return def;
605 }
606
607 return FunctionDom();
608}
609
610FunctionDom CodeModelHelper::functionDeclarationAt(ClassDom klass, int line, int column)
611{
612 ClassList classList = klass->classList();
613 ClassList::iterator clEnd = classList.end();
614 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
615 {
616 if (FunctionDom def = functionDeclarationAt(*it, line, column))
617 return def;
618 }
619
620 FunctionList functionList = klass->functionList();
621 FunctionList::iterator flEnd = functionList.end();
622 for (FunctionList::Iterator it=functionList.begin();
623 it!=flEnd; ++it)
624 {
625 if (FunctionDom def = functionDeclarationAt(*it, line, column))
626 return def;
627 }
628
629 return FunctionDom();
630}
631
632FunctionDom CodeModelHelper::functionDeclarationAt(FunctionDom fun, int line, int // column
633 )
634{
635 int startLine, startColumn;
636 int endLine, endColumn;
637
638 fun->getStartPosition(&startLine, &startColumn);
639 fun->getEndPosition(&endLine, &endColumn);
640
641 if (!(line >= startLine && line <= endLine) || fun->fileName() != m_fileName )
642 return FunctionDom();
643
644
645 /* if (line == startLine && column < startColumn)
646 return FunctionDom();
647
648 if (line == endLine && column > endColumn)
649 return FunctionDom();*/
650
651 return fun;
652}
653
654
655
656
657ClassDom CodeModelHelper::classAt(NamespaceDom ns, int line, int column)
658{
659 NamespaceList namespaceList = ns->namespaceList();
660 NamespaceList::iterator nsEnd = namespaceList.end();
661
662 for (NamespaceList::iterator it=namespaceList.begin(); it!=nsEnd; ++it)
663 {
664 if (ClassDom def = classAt(*it, line, column))
665 return def;
666 }
667
668 ClassList classList = ns->classList();
669 ClassList::iterator clEnd = classList.end();
670 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
671 {
672 if (ClassDom def = classAt(*it, line, column))
673 return def;
674 }
675
676 return ClassDom();
677}
678
679ClassDom CodeModelHelper::classAt(ClassDom klass, int line, int column)
680{
681 ClassList classList = klass->classList();
682 ClassList::iterator clEnd = classList.end();
683 for (ClassList::iterator it=classList.begin(); it!=clEnd; ++it)
684 {
685 if (ClassDom def = classAt(*it, line, column))
686 return def;
687 }
688
689 int startLine, startColumn;
690 int endLine, endColumn;
691
692 klass->getStartPosition(&startLine, &startColumn);
693 klass->getEndPosition(&endLine, &endColumn);
694
695 if (!(line >= startLine && line <= endLine) || klass->fileName() != m_fileName )
696 return ClassDom();
697
698 return klass;
699}
700
701
702CodeModelHelper::CodeModelHelper( CodeModel* model, FileDom file ) : m_model( model ) {
703 if( !file ) return;
704 m_files = file->wholeGroup();
705 m_fileName = file->name();
706}
707
708
709FunctionDom CodeModelHelper::functionAt( int line, int column, FunctionTypes types ) {
710 if( m_files.isEmpty() ) return FunctionDom();
711
712
713 FunctionDom ret;
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);
718 if(ret) return ret;
719 }
720 if( types & Definition ) {
721 FunctionDefinitionDom r = functionDefinitionAt(model_cast<NamespaceDom>(*it), line, column);
722 if(r) {
723 ret = model_cast<FunctionDom>( r );
724 return ret;
725 }
726 }
727 ++it;
728 }
729
730 return ret;
731}
732
733ClassDom CodeModelHelper::classAt( int line, int column ) {
734 if( m_files.isEmpty() ) return ClassDom();
735
736 ClassDom ret;
737 FileList::iterator it = m_files.begin();
738 while( it != m_files.end() ) {
739 ret = classAt( model_cast<NamespaceDom>(*it), line, column );
740 if(ret) return ret;
741 ++it;
742 }
743
744 return ret;
745}
746
747}//end of namespace CodeModeUtils
ArgumentList
The list of code model arguments.
ClassDom
Safe pointer to the ClassModel.
ClassList
The list of code model classes.
ClassModel
Class model.
Definition codemodel.h:697
ClassModel::classList
ClassList classList()
Definition codemodel.cpp:737
CodeModelItem::getEndPosition
void getEndPosition(int *line, int *col) const
Get the end position of the item.
Definition codemodel.cpp:637
CodeModelItem::getStartPosition
void getStartPosition(int *line, int *col) const
Gets the start position of the item.
Definition codemodel.cpp:625
CodeModelItem::Access
Access
An access to the code model item.
Definition codemodel.h:487
CodeModelItem::Private
@ Private
Private.
Definition codemodel.h:490
CodeModelItem::Protected
@ Protected
Protected.
Definition codemodel.h:489
CodeModelItem::Public
@ Public
Public.
Definition codemodel.h:488
CodeModel
Code Model - a memory symbol store.
Definition codemodel.h:325
FileDom
Safe pointer to the FileModel.
FunctionDefinitionDom
Safe pointer to the FunctionDefinitionModel.
FunctionDefinitionList
The list of code model function definitions.
FunctionDom
Safe pointer to the FunctionModel.
FunctionList
The list of code model functions.
NamespaceDom
Safe pointer to the NamespaceModel.
NamespaceList
The list of code model namespaces.
NamespaceModel
Namespace model.
Definition codemodel.h:1040
NamespaceModel::namespaceList
NamespaceList namespaceList()
Definition codemodel.cpp:670
VariableList
The list of code model variables.
codemodel_utils.h
Utility functions and classes for the CodeModel.
CodeModelUtils::FunctionDefinitions::processNamespaces
void processNamespaces(FunctionDefinitionList &list, const NamespaceDom dom)
Looks for function definitions in the namespace.
Definition codemodel_utils.cpp:141
CodeModelUtils::FunctionDefinitions::processClasses
void processClasses(FunctionDefinitionList &list, const ClassDom dom)
Looks for function definitions in the class.
Definition codemodel_utils.cpp:126
CodeModelUtils::Functions::processClasses
void processClasses(FunctionList &list, const ClassDom dom)
Looks for functions in the class.
Definition codemodel_utils.cpp:30
CodeModelUtils::Functions::processNamespaces
void processNamespaces(FunctionList &list, const NamespaceDom dom)
Looks for functions in the namespace.
Definition codemodel_utils.cpp:45
CodeModelUtils
Namespace which contains utility functions and classes for the CodeModel.
Definition codemodel_utils.cpp:25
CodeModelUtils::compareDeclarationToDefinition
bool compareDeclarationToDefinition(const FunctionDom &dec, const FunctionDefinitionDom &def)
Compares a declaration and a defintion of a function.
Definition codemodel_utils.cpp:320
CodeModelUtils::findClassByPosition
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...
Definition codemodel_utils.cpp:404
CodeModelUtils::accessSpecifierToString
TQString accessSpecifierToString(CodeModelItem::Access access)
Get the string representation of an accesss pecifier.
Definition codemodel_utils.cpp:489
CodeModelUtils::allFunctionDefinitionsDetailed
AllFunctionDefinitions allFunctionDefinitionsDetailed(const FileDom &dom)
Definition codemodel_utils.cpp:271
CodeModelUtils::findLastMethodLine
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...
Definition codemodel_utils.cpp:455
CodeModelUtils::findFunctionDeclarations
void findFunctionDeclarations(Pred pred, const FileList &fileList, FunctionList &lst)
Finds function declarations which match given predicate in files.
Definition codemodel_utils.h:276
CodeModelUtils::allFunctionsDetailed
AllFunctions allFunctionsDetailed(const FileDom &dom)
Definition codemodel_utils.cpp:245
CodeModelUtils::allFunctionsExhaustive
FunctionList allFunctionsExhaustive(FileDom &dom)
Definition codemodel_utils.cpp:383
CodeModelUtils::allFunctions
FunctionList allFunctions(const FileDom &dom)
Definition codemodel_utils.cpp:219
CodeModelUtils::findFunctionDefinitions
void findFunctionDefinitions(Pred pred, const FileList &fileList, FunctionDefinitionList &lst)
Finds function definitions which match given predicate in files.
Definition codemodel_utils.h:224
CodeModelUtils::findLastVariableLine
int findLastVariableLine(ClassDom aClass, CodeModelItem::Access access)
Same as above, but finds a membervariable instead of a method.
Definition codemodel_utils.cpp:472
CodeModelUtils::allFunctionDefinitionsExhaustive
FunctionDefinitionList allFunctionDefinitionsExhaustive(FileDom &dom)
Definition codemodel_utils.cpp:393
CodeModelUtils::AllFunctionDefinitions
Information about function definitions.
Definition codemodel_utils.h:341
CodeModelUtils::AllFunctionDefinitions::functionList
FunctionDefinitionList functionList
List of function definitions.
Definition codemodel_utils.h:345
CodeModelUtils::AllFunctionDefinitions::relations
TQMap< FunctionDefinitionDom, Scope > relations
Scope of function definitions.
Definition codemodel_utils.h:343
CodeModelUtils::AllFunctions
Information about functions.
Definition codemodel_utils.h:334
CodeModelUtils::AllFunctions::functionList
FunctionList functionList
List of functions.
Definition codemodel_utils.h:338
CodeModelUtils::AllFunctions::relations
TQMap< FunctionDom, Scope > relations
Scope of functions.
Definition codemodel_utils.h:336

TDevelop Interfaces Library

Skip menu "TDevelop Interfaces Library"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

TDevelop Interfaces Library

Skip menu "TDevelop Interfaces Library"
  • buildtools
  •   lib
  •     base
  •     parsers
  •       autotools
  •       qmake
  •     widgets
  •   api
  • languages
  •   lib
  •     debugger
  •     designer_integration
  •     interfaces
  • lib
  •   catalog
  •   interfaces
  •     extensions
  •     external
  •     extras
  •   util
  •   widgets
  •     propeditor
  • parts
  •   documentation
  •     interfaces
  • src
  •   profileengine
  •     lib
Generated for TDevelop Interfaces Library by doxygen 1.9.8
This website is maintained by Timothy Pearson.