@@ -214,6 +214,104 @@ class Language : public PluginInterface {
214
214
return std::vector<Language::MethodNameVariant>();
215
215
};
216
216
217
+ class MethodName {
218
+ public:
219
+ MethodName () {}
220
+
221
+ MethodName (ConstString full)
222
+ : m_full(full), m_basename(), m_context(), m_arguments(),
223
+ m_qualifiers (), m_return_type(), m_scope_qualified(), m_parsed(false ),
224
+ m_parse_error(false ) {}
225
+
226
+ virtual ~MethodName () {};
227
+
228
+ void Clear () {
229
+ m_full.Clear ();
230
+ m_basename = llvm::StringRef ();
231
+ m_context = llvm::StringRef ();
232
+ m_arguments = llvm::StringRef ();
233
+ m_qualifiers = llvm::StringRef ();
234
+ m_return_type = llvm::StringRef ();
235
+ m_scope_qualified.clear ();
236
+ m_parsed = false ;
237
+ m_parse_error = false ;
238
+ }
239
+
240
+ bool IsValid () {
241
+ if (!m_parsed)
242
+ Parse ();
243
+ if (m_parse_error)
244
+ return false ;
245
+ return (bool )m_full;
246
+ }
247
+
248
+ ConstString GetFullName () const { return m_full; }
249
+
250
+ llvm::StringRef GetBasename () {
251
+ if (!m_parsed)
252
+ Parse ();
253
+ return m_basename;
254
+ }
255
+
256
+ llvm::StringRef GetContext () {
257
+ if (!m_parsed)
258
+ Parse ();
259
+ return m_context;
260
+ }
261
+
262
+ llvm::StringRef GetArguments () {
263
+ if (!m_parsed)
264
+ Parse ();
265
+ return m_arguments;
266
+ }
267
+
268
+ llvm::StringRef GetQualifiers () {
269
+ if (!m_parsed)
270
+ Parse ();
271
+ return m_qualifiers;
272
+ }
273
+
274
+ llvm::StringRef GetReturnType () {
275
+ if (!m_parsed)
276
+ Parse ();
277
+ return m_return_type;
278
+ }
279
+
280
+ std::string GetScopeQualifiedName () {
281
+ if (!m_parsed)
282
+ Parse ();
283
+ return m_scope_qualified;
284
+ }
285
+
286
+ protected:
287
+ virtual void Parse () {
288
+ m_parsed = true ;
289
+ m_parse_error = true ;
290
+ }
291
+
292
+ ConstString m_full; // Full name:
293
+ // "size_t lldb::SBTarget::GetBreakpointAtIndex(unsigned
294
+ // int) const"
295
+ llvm::StringRef m_basename; // Basename: "GetBreakpointAtIndex"
296
+ llvm::StringRef m_context; // Decl context: "lldb::SBTarget"
297
+ llvm::StringRef m_arguments; // Arguments: "(unsigned int)"
298
+ llvm::StringRef m_qualifiers; // Qualifiers: "const"
299
+ llvm::StringRef m_return_type; // Return type: "size_t"
300
+ std::string m_scope_qualified;
301
+ bool m_parsed = false ;
302
+ bool m_parse_error = false ;
303
+ };
304
+
305
+ virtual std::unique_ptr<Language::MethodName>
306
+ GetMethodName (ConstString name) const {
307
+ return std::make_unique<Language::MethodName>(name);
308
+ };
309
+
310
+ virtual std::pair<lldb::FunctionNameType, llvm::StringRef>
311
+ GetFunctionNameInfo (ConstString name) const {
312
+ return std::pair{lldb::eFunctionNameTypeNone, llvm::StringRef ()};
313
+ };
314
+
217
315
// / Returns true iff the given symbol name is compatible with the mangling
218
316
// / scheme of this language.
219
317
// /
0 commit comments