MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / loadContainer

Function loadContainer

gui/cppchecklibrarydata.cpp:49–102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47}
48
49static CppcheckLibraryData::Container loadContainer(QXmlStreamReader &xmlReader)
50{
51 CppcheckLibraryData::Container container;
52 container.id = xmlReader.attributes().value("id").toString();
53 container.inherits = xmlReader.attributes().value("inherits").toString();
54 container.startPattern = xmlReader.attributes().value("startPattern").toString();
55 container.endPattern = xmlReader.attributes().value("endPattern").toString();
56 container.opLessAllowed = xmlReader.attributes().value("opLessAllowed").toString();
57 container.itEndPattern = xmlReader.attributes().value("itEndPattern").toString();
58
59 QXmlStreamReader::TokenType type;
60 while ((type = xmlReader.readNext()) != QXmlStreamReader::EndElement ||
61 xmlReader.name().toString() != "container") {
62 if (type != QXmlStreamReader::StartElement)
63 continue;
64 const QString elementName = xmlReader.name().toString();
65 if (elementName == "type") {
66 container.type.templateParameter = xmlReader.attributes().value("templateParameter").toString();
67 container.type.string = xmlReader.attributes().value("string").toString();
68 } else if (elementName == "size" || elementName == "access" || elementName == "other" || elementName == "rangeItemRecordType") {
69 const QString indexOperator = xmlReader.attributes().value("indexOperator").toString();
70 if (elementName == "access" && indexOperator == "array-like")
71 container.access_arrayLike = true;
72 const QString templateParameter = xmlReader.attributes().value("templateParameter").toString();
73 if (elementName == "size" && !templateParameter.isEmpty())
74 container.size_templateParameter = templateParameter.toInt();
75 for (;;) {
76 type = xmlReader.readNext();
77 if (xmlReader.name().toString() == elementName)
78 break;
79 if (type != QXmlStreamReader::StartElement)
80 continue;
81 CppcheckLibraryData::Container::Function function;
82 function.name = xmlReader.attributes().value("name").toString();
83 function.action = xmlReader.attributes().value("action").toString();
84 function.yields = xmlReader.attributes().value("yields").toString();
85 if (elementName == "size")
86 container.sizeFunctions.append(function);
87 else if (elementName == "access")
88 container.accessFunctions.append(function);
89 else if (elementName == "rangeItemRecordType") {
90 CppcheckLibraryData::Container::RangeItemRecordType rangeItemRecordType;
91 rangeItemRecordType.name = xmlReader.attributes().value("name").toString();
92 rangeItemRecordType.templateParameter = xmlReader.attributes().value("templateParameter").toString();
93 container.rangeItemRecordTypeList.append(rangeItemRecordType);
94 } else
95 container.otherFunctions.append(function);
96 }
97 } else {
98 unhandledElement(xmlReader);
99 }
100 }
101 return container;
102}
103
104static CppcheckLibraryData::Define loadDefine(const QXmlStreamReader &xmlReader)
105{

Callers 1

openMethod · 0.85

Calls 5

unhandledElementFunction · 0.85
isEmptyMethod · 0.80
toStringMethod · 0.45
valueMethod · 0.45
nameMethod · 0.45

Tested by

no test coverage detected