diff options
Diffstat (limited to 'lldb/source/Plugins/Language/ObjC')
| -rw-r--r-- | lldb/source/Plugins/Language/ObjC/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp | 68 | ||||
| -rw-r--r-- | lldb/source/Plugins/Language/ObjC/ObjCLanguage.h | 63 |
3 files changed, 136 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Language/ObjC/CMakeLists.txt b/lldb/source/Plugins/Language/ObjC/CMakeLists.txt new file mode 100644 index 00000000000..af4cc0692d4 --- /dev/null +++ b/lldb/source/Plugins/Language/ObjC/CMakeLists.txt @@ -0,0 +1,5 @@ +set(LLVM_NO_RTTI 1) + +add_lldb_library(lldbPluginAppleObjCLanguage + AppleObjCLanguage.cpp +) diff --git a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp new file mode 100644 index 00000000000..8f21c46bfe3 --- /dev/null +++ b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp @@ -0,0 +1,68 @@ +//===-- ObjCLanguage.cpp --------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "ObjCLanguage.h" + +#include "lldb/Core/ConstString.h" +#include "lldb/Core/PluginManager.h" + +using namespace lldb; +using namespace lldb_private; + +void +ObjCLanguage::Initialize() +{ + PluginManager::RegisterPlugin (GetPluginNameStatic(), + "Objective-C Language", + CreateInstance); +} + +void +ObjCLanguage::Terminate() +{ + PluginManager::UnregisterPlugin (CreateInstance); +} + +lldb_private::ConstString +ObjCLanguage::GetPluginNameStatic() +{ + static ConstString g_name("objc"); + return g_name; +} + + +//------------------------------------------------------------------ +// PluginInterface protocol +//------------------------------------------------------------------ +lldb_private::ConstString +ObjCLanguage::GetPluginName() +{ + return GetPluginNameStatic(); +} + +uint32_t +ObjCLanguage::GetPluginVersion() +{ + return 1; +} + +//------------------------------------------------------------------ +// Static Functions +//------------------------------------------------------------------ +Language * +ObjCLanguage::CreateInstance (lldb::LanguageType language) +{ + switch (language) + { + case lldb::eLanguageTypeObjC: + return new ObjCLanguage(); + default: + return nullptr; + } +} diff --git a/lldb/source/Plugins/Language/ObjC/ObjCLanguage.h b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.h new file mode 100644 index 00000000000..3a43972f3f0 --- /dev/null +++ b/lldb/source/Plugins/Language/ObjC/ObjCLanguage.h @@ -0,0 +1,63 @@ +//===-- ObjCLanguage.h ----------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_ObjCLanguage_h_ +#define liblldb_ObjCLanguage_h_ + +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes +#include "lldb/lldb-private.h" +#include "lldb/Target/Language.h" + +namespace lldb_private { + +class ObjCLanguage : + public Language +{ +public: + virtual ~ObjCLanguage() = default; + + ObjCLanguage () = default; + + lldb::LanguageType + GetLanguageType () const + { + return lldb::eLanguageTypeObjC; + } + + //------------------------------------------------------------------ + // Static Functions + //------------------------------------------------------------------ + static void + Initialize(); + + static void + Terminate(); + + static lldb_private::Language * + CreateInstance (lldb::LanguageType language); + + static lldb_private::ConstString + GetPluginNameStatic(); + + //------------------------------------------------------------------ + // PluginInterface protocol + //------------------------------------------------------------------ + virtual ConstString + GetPluginName(); + + virtual uint32_t + GetPluginVersion(); +}; + +} // namespace lldb_private + +#endif // liblldb_ObjCLanguage_h_ |

