Skip to main content

The stlsupport.cpp File Reference

Included Headers

#include "stlsupport.h" #include "entry.h" #include "config.h"

Classes Index

structSTLInfo

A struct contained the data for an STL class. More...

Functions Index

static voidaddSTLMember (const std::shared_ptr< Entry > &root, const char *type, const char *name)
static voidaddSTLIterator (const std::shared_ptr< Entry > &classEntry, const QCString &name)
static voidaddSTLClass (const std::shared_ptr< Entry > &root, const STLInfo *info)
static voidaddSTLClasses (const std::shared_ptr< Entry > &root)
voidaddSTLSupport (std::shared_ptr< Entry > &root)

Add stub entries for the most used classes in the standard template library. More...

Variables Index

static STLInfog_stlinfo[]

Functions

addSTLClass()

void addSTLClass (const std::shared_ptr< Entry > & root, const STLInfo * info)
static

Definition at line 166 of file stlsupport.cpp.

166static void addSTLClass(const std::shared_ptr<Entry> &root,const STLInfo *info)
167{
168 //printf("Adding STL class %s\n",info->className);
169 QCString fullName = info->className;
170 fullName.prepend("std::");
171
172 // add fake Entry for the class
173 std::shared_ptr<Entry> classEntry = std::make_shared<Entry>();
174 classEntry->fileName = "[STL]";
175 classEntry->startLine = 1;
176 classEntry->name = fullName;
177 classEntry->section = EntryType::makeClass();
178 classEntry->brief = "STL class";
179 classEntry->hidden = false;
180 classEntry->artificial= true;
181
182 // add template arguments to class
183 if (info->templType1 != nullptr)
184 {
185 ArgumentList al;
186 Argument a;
187 a.type="typename";
188 a.name=info->templType1;
189 al.push_back(a);
190 if (info->templType2 != nullptr) // another template argument
191 {
192 a.type="typename";
193 a.name=info->templType2;
194 al.push_back(a);
195 }
196 classEntry->tArgLists.push_back(al);
197 }
198 // add member variables
199 if (info->templName1 != nullptr)
200 {
201 addSTLMember(classEntry,info->templType1,info->templName1);
202 }
203 if (info->templName2 != nullptr)
204 {
205 addSTLMember(classEntry,info->templType2,info->templName2);
206 }
207 if (fullName=="std::auto_ptr" ||
208 fullName=="std::smart_ptr" ||
209 fullName=="std::shared_ptr" ||
210 fullName=="std::weak_ptr" ||
211 fullName=="std::unique_ptr")
212 {
213 std::shared_ptr<Entry> memEntry = std::make_shared<Entry>();
214 memEntry->name = "operator->";
215 memEntry->args = "()";
216 memEntry->type = "T*";
217 memEntry->protection = Protection::Public;
218 memEntry->section = EntryType::makeFunction();
219 memEntry->brief = "STL member";
220 memEntry->hidden = false;
221 memEntry->artificial = false;
222 classEntry->moveToSubEntryAndKeep(memEntry);
223 }
224 Specifier virt = info->virtualInheritance ? Specifier::Virtual : Specifier::Normal;
225 if (info->baseClass1 != nullptr)
226 {
227 classEntry->extends.emplace_back(info->baseClass1, Protection::Public, virt);
228 }
229 if (info->baseClass2 != nullptr)
230 {
231 classEntry->extends.emplace_back(info->baseClass2, Protection::Public, virt);
232 }
233 if (info->iterators)
234 {
235 // add iterator class
236 addSTLIterator(classEntry,fullName+"::iterator");
237 addSTLIterator(classEntry,fullName+"::const_iterator");
238 addSTLIterator(classEntry,fullName+"::reverse_iterator");
239 addSTLIterator(classEntry,fullName+"::const_reverse_iterator");
240 }
241 root->moveToSubEntryAndKeep(classEntry);
242}

References addSTLIterator, addSTLMember, STLInfo::baseClass1, STLInfo::baseClass2, STLInfo::className, STLInfo::iterators, Argument::name, QCString::prepend, ArgumentList::push_back, STLInfo::templName1, STLInfo::templName2, STLInfo::templType1, STLInfo::templType2, Argument::type and STLInfo::virtualInheritance.

Referenced by addSTLClasses.

addSTLClasses()

void addSTLClasses (const std::shared_ptr< Entry > & root)
static

Definition at line 245 of file stlsupport.cpp.

245static void addSTLClasses(const std::shared_ptr<Entry> &root)
246{
247 std::shared_ptr<Entry> namespaceEntry = std::make_shared<Entry>();
248 namespaceEntry->fileName = "[STL]";
249 namespaceEntry->startLine = 1;
250 namespaceEntry->name = "std";
251 namespaceEntry->section = EntryType::makeNamespace();
252 namespaceEntry->brief = "STL namespace";
253 namespaceEntry->hidden = false;
254 namespaceEntry->artificial= true;
255
256 STLInfo *info = g_stlinfo;
257 while (info->className != nullptr)
258 {
259 addSTLClass(namespaceEntry,info);
260 info++;
261 }
262
263 root->moveToSubEntryAndKeep(namespaceEntry);
264}

References addSTLClass, STLInfo::className and g_stlinfo.

Referenced by addSTLSupport.

addSTLIterator()

void addSTLIterator (const std::shared_ptr< Entry > & classEntry, const QCString & name)
static

Definition at line 153 of file stlsupport.cpp.

153static void addSTLIterator(const std::shared_ptr<Entry> &classEntry,const QCString &name)
154{
155 std::shared_ptr<Entry> iteratorClassEntry = std::make_shared<Entry>();
156 iteratorClassEntry->fileName = "[STL]";
157 iteratorClassEntry->startLine = 1;
158 iteratorClassEntry->name = name;
159 iteratorClassEntry->section = EntryType::makeClass();
160 iteratorClassEntry->brief = "STL iterator class";
161 iteratorClassEntry->hidden = false;
162 iteratorClassEntry->artificial= true;
163 classEntry->moveToSubEntryAndKeep(iteratorClassEntry);
164}

Referenced by addSTLClass.

addSTLMember()

void addSTLMember (const std::shared_ptr< Entry > & root, const char * type, const char * name)
static

Definition at line 140 of file stlsupport.cpp.

140static void addSTLMember(const std::shared_ptr<Entry> &root,const char *type,const char *name)
141{
142 std::shared_ptr<Entry> memEntry = std::make_shared<Entry>();
143 memEntry->name = name;
144 memEntry->type = type;
145 memEntry->protection = Protection::Public;
146 memEntry->section = EntryType::makeVariable();
147 memEntry->brief = "STL member";
148 memEntry->hidden = false;
149 memEntry->artificial = true;
150 root->moveToSubEntryAndKeep(memEntry);
151}

Referenced by addSTLClass.

addSTLSupport()

void addSTLSupport (std::shared_ptr< Entry > & root)

Add stub entries for the most used classes in the standard template library.

Parameters
root

Root of the entry tree to add the entries to.

Definition at line 266 of file stlsupport.cpp.

266void addSTLSupport(std::shared_ptr<Entry> &root)
267{
268 if (Config_getBool(BUILTIN_STL_SUPPORT))
269 {
270 addSTLClasses(root);
271 }
272}

References addSTLClasses and Config_getBool.

Referenced by parseInput.

Variables

g_stlinfo

STLInfo g_stlinfo[]
static

Definition at line 34 of file stlsupport.cpp.

34static STLInfo g_stlinfo[] =
35{
36 // className baseClass1 baseClass2 templType1 templName1 templType2 templName2 virtInheritance // iterators
37 { "allocator", nullptr, nullptr, "T", "elements", nullptr, nullptr, false, false },
38 { "auto_ptr", nullptr, nullptr, "T", "ptr", nullptr, nullptr, false, false }, // deprecated
39 { "smart_ptr", nullptr, nullptr, "T", "ptr", nullptr, nullptr, false, false }, // C++11
40 { "unique_ptr", nullptr, nullptr, "T", "ptr", nullptr, nullptr, false, false }, // C++11
41 { "shared_ptr", nullptr, nullptr, "T", "ptr", nullptr, nullptr, false, false }, // C++14
42 { "weak_ptr", nullptr, nullptr, "T", "ptr", nullptr, nullptr, false, false }, // C++11
43 { "atomic", nullptr, nullptr, "T", "ptr", nullptr, nullptr, false, false }, // C++11
44 { "atomic_ref", nullptr, nullptr, "T", "ptr", nullptr, nullptr, false, false }, // C++20
45 { "lock_guard", nullptr, nullptr, "T", "ptr", nullptr, nullptr, false, false }, // C++11
46 { "unique_lock", nullptr, nullptr, "T", "ptr", nullptr, nullptr, false, false }, // C++11
47 { "shared_lock", nullptr, nullptr, "T", "ptr", nullptr, nullptr, false, false }, // C++14
48 { "ios_base", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++11
49 { "error_code", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++11
50 { "error_category", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++11
51 { "system_error", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++11
52 { "error_condition", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++11
53 { "thread", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++11
54 { "jthread", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++11
55 { "mutex", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++11
56 { "timed_mutex", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++11
57 { "recursive_mutex", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++11
58 { "recursive_timed_mutex",nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++11
59 { "shared_mutex", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++17
60 { "shared_timed_mutex", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }, // C++14
61 { "basic_ios", "ios_base", nullptr, "Char", nullptr, nullptr, nullptr, false, false },
62 { "basic_istream", "basic_ios<Char>", nullptr, "Char", nullptr, nullptr, nullptr, true, false },
63 { "basic_ostream", "basic_ios<Char>", nullptr, "Char", nullptr, nullptr, nullptr, true, false },
64 { "basic_iostream", "basic_istream<Char>", "basic_ostream<Char>", "Char", nullptr, nullptr, nullptr, false, false },
65 { "basic_ifstream", "basic_istream<Char>", nullptr, "Char", nullptr, nullptr, nullptr, false, false },
66 { "basic_ofstream", "basic_ostream<Char>", nullptr, "Char", nullptr, nullptr, nullptr, false, false },
67 { "basic_fstream", "basic_iostream<Char>", nullptr, "Char", nullptr, nullptr, nullptr, false, false },
68 { "basic_istringstream", "basic_istream<Char>", nullptr, "Char", nullptr, nullptr, nullptr, false, false },
69 { "basic_ostringstream", "basic_ostream<Char>", nullptr, "Char", nullptr, nullptr, nullptr, false, false },
70 { "basic_stringstream", "basic_iostream<Char>", nullptr, "Char", nullptr, nullptr, nullptr, false, false },
71 { "ios", "basic_ios<char>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
72 { "wios", "basic_ios<wchar_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
73 { "istream", "basic_istream<char>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
74 { "wistream", "basic_istream<wchar_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
75 { "ostream", "basic_ostream<char>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
76 { "wostream", "basic_ostream<wchar_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
77 { "ifstream", "basic_ifstream<char>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
78 { "wifstream", "basic_ifstream<wchar_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
79 { "ofstream", "basic_ofstream<char>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
80 { "wofstream", "basic_ofstream<wchar_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
81 { "fstream", "basic_fstream<char>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
82 { "wfstream", "basic_fstream<wchar_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
83 { "istringstream", "basic_istringstream<char>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
84 { "wistringstream", "basic_istringstream<wchar_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
85 { "ostringstream", "basic_ostringstream<char>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
86 { "wostringstream", "basic_ostringstream<wchar_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
87 { "stringstream", "basic_stringstream<char>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
88 { "wstringstream", "basic_stringstream<wchar_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
89 { "basic_string", nullptr, nullptr, "Char", nullptr, nullptr, nullptr, false, true },
90 { "string", "basic_string<char>", nullptr, nullptr, nullptr, nullptr, nullptr, false, true },
91 { "wstring", "basic_string<wchar_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, true },
92 { "u8string", "basic_string<char8_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, true }, // C++20
93 { "u16string", "basic_string<char16_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, true }, // C++11
94 { "u32string", "basic_string<char32_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, true }, // C++11
95 { "basic_string_view", nullptr, nullptr, "Char", nullptr, nullptr, nullptr, false, true },
96 { "string_view", "basic_string_view<char>", nullptr, nullptr, nullptr, nullptr, nullptr, false, true }, // C++17
97 { "wstring_view", "basic_string_view<wchar_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, true }, // C++17
98 { "u8string_view", "basic_string_view<char8_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, true }, // C++20
99 { "u16string_view", "basic_string_view<char16_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, true }, // C++17
100 { "u32string_view", "basic_string_view<char32_t>", nullptr, nullptr, nullptr, nullptr, nullptr, false, true }, // C++17
101 { "complex", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
102 { "bitset", nullptr, nullptr, "Bits", nullptr, nullptr, nullptr, false, false },
103 { "deque", nullptr, nullptr, "T", "elements", nullptr, nullptr, false, true },
104 { "list", nullptr, nullptr, "T", "elements", nullptr, nullptr, false, true },
105 { "forward_list", nullptr, nullptr, "T", "elements", nullptr, nullptr, false, true }, // C++11
106 { "pair", nullptr, nullptr, "T1", "first_type", "T2", "second_type", false, false },
107 { "map", nullptr, nullptr, "K", "keys", "T", "elements", false, true },
108 { "unordered_map", nullptr, nullptr, "K", "keys", "T", "elements", false, true }, // C++11
109 { "multimap", nullptr, nullptr, "K", "keys", "T", "elements", false, true },
110 { "unordered_multimap", nullptr, nullptr, "K", "keys", "T", "elements", false, true }, // C++11
111 { "set", nullptr, nullptr, "K", "keys", nullptr, nullptr, false, true },
112 { "unordered_set", nullptr, nullptr, "K", "keys", nullptr, nullptr, false, true }, // C++11
113 { "multiset", nullptr, nullptr, "K", "keys", nullptr, nullptr, false, true },
114 { "unordered_multiset", nullptr, nullptr, "K", "keys", nullptr, nullptr, false, true }, // C++11
115 { "array", nullptr, nullptr, "T", "elements", nullptr, nullptr, false, true }, // C++11
116 { "vector", nullptr, nullptr, "T", "elements", nullptr, nullptr, false, true },
117 { "span", nullptr, nullptr, "T", "elements", nullptr, nullptr, false, true }, // C++20
118 { "queue", nullptr, nullptr, "T", "elements", nullptr, nullptr, false, false },
119 { "priority_queue", nullptr, nullptr, "T", "elements", nullptr, nullptr, false, false },
120 { "stack", nullptr, nullptr, "T", "elements", nullptr, nullptr, false, false },
121 { "valarray", nullptr, nullptr, "T", "elements", nullptr, nullptr, false, false },
122 { "exception", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
123 { "bad_alloc", "exception", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
124 { "bad_cast", "exception", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
125 { "bad_typeid", "exception", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
126 { "logic_error", "exception", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
127 { "ios_base::failure", "exception", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
128 { "runtime_error", "exception", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
129 { "bad_exception", "exception", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
130 { "domain_error", "logic_error", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
131 { "invalid_argument", "logic_error", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
132 { "length_error", "logic_error", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
133 { "out_of_range", "logic_error", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
134 { "range_error", "runtime_error", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
135 { "overflow_error", "runtime_error", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
136 { "underflow_error", "runtime_error", nullptr, nullptr, nullptr, nullptr, nullptr, false, false },
137 { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, false, false }
138};

Referenced by addSTLClasses.


Generated via doxygen2docusaurus by Doxygen 1.14.0.