00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#include "codemodel_utils.h"
00022
00023 namespace CodeModelUtils
00024 {
00025
00026 namespace Functions
00027 {
00028
00029 void processClasses(
FunctionList &list,
const ClassDom dom)
00030 {
00031
const ClassList cllist = dom->classList();
00032
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00033 {
00034
processClasses(list, *it);
00035 }
00036
00037
const FunctionList fnlist = dom->functionList();
00038
for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00039 {
00040 list.append(*it);
00041 }
00042 }
00043
00044 void processNamespaces(
FunctionList &list,
const NamespaceDom dom)
00045 {
00046
const NamespaceList nslist = dom->namespaceList();
00047
for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
00048 {
00049
processNamespaces(list, *it);
00050 }
00051
const ClassList cllist = dom->classList();
00052
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00053 {
00054
processClasses(list, *it);
00055 }
00056
00057
const FunctionList fnlist = dom->functionList();
00058
for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00059 {
00060 list.append(*it);
00061 }
00062 }
00063
00064 void processNamespaces(
FunctionList & list,
const NamespaceDom dom,
QMap< FunctionDom, Scope > & relations )
00065 {
00066
const NamespaceList nslist = dom->namespaceList();
00067
for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
00068 {
00069
processNamespaces(list, *it, relations);
00070 }
00071
const ClassList cllist = dom->classList();
00072
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00073 {
00074
processClasses(list, *it, relations, dom);
00075 }
00076
00077
const FunctionList fnlist = dom->functionList();
00078
for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00079 {
00080 list.append(*it);
00081 relations[*it].ns = dom;
00082 }
00083 }
00084
00085 void processClasses(
FunctionList & list,
const ClassDom dom,
QMap< FunctionDom, Scope > & relations )
00086 {
00087
const ClassList cllist = dom->classList();
00088
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00089 {
00090
processClasses(list, *it, relations);
00091 }
00092
00093
const FunctionList fnlist = dom->functionList();
00094
for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00095 {
00096 list.append(*it);
00097 relations[*it].klass = dom;
00098 }
00099 }
00100
00101 void processClasses(
FunctionList & list,
const ClassDom dom,
QMap< FunctionDom, Scope > & relations,
const NamespaceDom & nsdom )
00102 {
00103
const ClassList cllist = dom->classList();
00104
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00105 {
00106
processClasses(list, *it, relations, nsdom);
00107 }
00108
00109
const FunctionList fnlist = dom->functionList();
00110
for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00111 {
00112 list.append(*it);
00113 relations[*it].klass = dom;
00114 relations[*it].ns = nsdom;
00115 }
00116 }
00117
00118 }
00119
00120
00121
00122 namespace FunctionDefinitions
00123 {
00124
00125 void processClasses(
FunctionDefinitionList &list,
const ClassDom dom)
00126 {
00127
const ClassList cllist = dom->classList();
00128
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00129 {
00130
processClasses(list, *it);
00131 }
00132
00133
const FunctionDefinitionList fnlist = dom->functionDefinitionList();
00134
for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00135 {
00136 list.append(*it);
00137 }
00138 }
00139
00140 void processNamespaces(
FunctionDefinitionList &list,
const NamespaceDom dom)
00141 {
00142
const NamespaceList nslist = dom->namespaceList();
00143
for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
00144 {
00145
processNamespaces(list, *it);
00146 }
00147
const ClassList cllist = dom->classList();
00148
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00149 {
00150
processClasses(list, *it);
00151 }
00152
00153
const FunctionDefinitionList fnlist = dom->functionDefinitionList();
00154
for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00155 {
00156 list.append(*it);
00157 }
00158 }
00159
00160 void processNamespaces(
FunctionDefinitionList & list,
const NamespaceDom dom,
QMap< FunctionDefinitionDom, Scope > & relations )
00161 {
00162
const NamespaceList nslist = dom->namespaceList();
00163
for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
00164 {
00165
processNamespaces(list, *it, relations);
00166 }
00167
const ClassList cllist = dom->classList();
00168
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00169 {
00170
processClasses(list, *it, relations, dom);
00171 }
00172
00173
const FunctionDefinitionList fnlist = dom->functionDefinitionList();
00174
for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00175 {
00176 list.append(*it);
00177 relations[*it].ns = dom;
00178 }
00179 }
00180
00181 void processClasses(
FunctionDefinitionList & list,
const ClassDom dom,
QMap< FunctionDefinitionDom, Scope > & relations )
00182 {
00183
const ClassList cllist = dom->classList();
00184
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00185 {
00186
processClasses(list, *it, relations);
00187 }
00188
00189
const FunctionDefinitionList fnlist = dom->functionDefinitionList();
00190
for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00191 {
00192 list.append(*it);
00193 relations[*it].klass = dom;
00194 }
00195 }
00196
00197 void processClasses(
FunctionDefinitionList & list,
const ClassDom dom,
QMap< FunctionDefinitionDom, Scope > & relations,
const NamespaceDom & nsdom )
00198 {
00199
const ClassList cllist = dom->classList();
00200
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00201 {
00202
processClasses(list, *it, relations, nsdom);
00203 }
00204
00205
const FunctionDefinitionList fnlist = dom->functionDefinitionList();
00206
for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00207 {
00208 list.append(*it);
00209 relations[*it].klass = dom;
00210 relations[*it].ns = nsdom;
00211 }
00212 }
00213
00214 }
00215
00216
00217
00218 FunctionList allFunctions(
const FileDom &dom)
00219 {
00220
using namespace Functions;
00221
FunctionList list;
00222
00223
const NamespaceList nslist = dom->namespaceList();
00224
for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
00225 {
00226 processNamespaces(list, *it);
00227 }
00228
00229
const ClassList cllist = dom->classList();
00230
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00231 {
00232 processClasses(list, *it);
00233 }
00234
00235
const FunctionList fnlist = dom->functionList();
00236
for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00237 {
00238 list.append(*it);
00239 }
00240
00241
return list;
00242 }
00243
00244 AllFunctions allFunctionsDetailed(
const FileDom & dom )
00245 {
00246
using namespace Functions;
00247
AllFunctions list;
00248
00249
const NamespaceList nslist = dom->namespaceList();
00250
for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
00251 {
00252 processNamespaces(list.
functionList, *it, list.
relations);
00253 }
00254
00255
const ClassList cllist = dom->classList();
00256
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00257 {
00258 processClasses(list.
functionList, *it, list.
relations);
00259 }
00260
00261
const FunctionList fnlist = dom->functionList();
00262
for (FunctionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00263 {
00264 list.
functionList.append(*it);
00265 }
00266
00267
return list;
00268 }
00269
00270 AllFunctionDefinitions allFunctionDefinitionsDetailed(
const FileDom & dom )
00271 {
00272
using namespace FunctionDefinitions;
00273
AllFunctionDefinitions list;
00274
00275
const NamespaceList nslist = dom->namespaceList();
00276
for (NamespaceList::ConstIterator it = nslist.begin(); it != nslist.end(); ++it)
00277 {
00278 processNamespaces(list.
functionList, *it, list.
relations);
00279 }
00280
00281
const ClassList cllist = dom->classList();
00282
for (ClassList::ConstIterator it = cllist.begin(); it != cllist.end(); ++it)
00283 {
00284 processClasses(list.
functionList, *it, list.
relations);
00285 }
00286
00287
const FunctionDefinitionList fnlist = dom->functionDefinitionList();
00288
for (FunctionDefinitionList::ConstIterator it = fnlist.begin(); it != fnlist.end(); ++it)
00289 {
00290 list.
functionList.append(*it);
00291 }
00292
00293
return list;
00294 }
00295
00296 }
00297