1 //===-- Language.h ---------------------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef liblldb_Language_h_ 11 #define liblldb_Language_h_ 12 13 // C Includes 14 // C++ Includes 15 #include <functional> 16 #include <vector> 17 18 // Other libraries and framework includes 19 // Project includes 20 #include "lldb/lldb-public.h" 21 #include "lldb/lldb-private.h" 22 #include "lldb/Core/PluginInterface.h" 23 #include "lldb/DataFormatters/StringPrinter.h" 24 25 namespace lldb_private { 26 27 class Language : 28 public PluginInterface 29 { 30 public: 31 ~Language() override; 32 33 static Language* 34 FindPlugin (lldb::LanguageType language); 35 36 // return false from callback to stop iterating 37 static void 38 ForEach (std::function<bool(Language*)> callback); 39 40 virtual lldb::LanguageType 41 GetLanguageType () const = 0; 42 43 virtual lldb::TypeCategoryImplSP 44 GetFormatters (); 45 46 virtual std::vector<ConstString> 47 GetPossibleFormattersMatches (ValueObject& valobj, lldb::DynamicValueType use_dynamic); 48 49 virtual lldb_private::formatters::StringPrinter::EscapingHelper 50 GetStringPrinterEscapingHelper (lldb_private::formatters::StringPrinter::GetPrintableElementType); 51 52 // These are accessors for general information about the Languages lldb knows about: 53 54 static lldb::LanguageType 55 GetLanguageTypeFromString (const char *string); 56 57 static const char * 58 GetNameForLanguageType (lldb::LanguageType language); 59 60 static void 61 PrintAllLanguages (Stream &s, const char *prefix, const char *suffix); 62 63 // return false from callback to stop iterating 64 static void 65 ForAllLanguages (std::function<bool(lldb::LanguageType)> callback); 66 67 static bool 68 LanguageIsCPlusPlus (lldb::LanguageType language); 69 70 static bool 71 LanguageIsObjC (lldb::LanguageType language); 72 73 static bool 74 LanguageIsC (lldb::LanguageType language); 75 76 static bool 77 LanguageIsPascal (lldb::LanguageType language); 78 79 80 protected: 81 //------------------------------------------------------------------ 82 // Classes that inherit from Language can see and modify these 83 //------------------------------------------------------------------ 84 85 Language(); 86 private: 87 88 DISALLOW_COPY_AND_ASSIGN (Language); 89 }; 90 91 } // namespace lldb_private 92 93 #endif // liblldb_Language_h_ 94