15f9d3106SEnrico Granata //===-- CPlusPlusLanguage.cpp --------------------------------------*- C++ -*-===//
25f9d3106SEnrico Granata //
35f9d3106SEnrico Granata //                     The LLVM Compiler Infrastructure
45f9d3106SEnrico Granata //
55f9d3106SEnrico Granata // This file is distributed under the University of Illinois Open Source
65f9d3106SEnrico Granata // License. See LICENSE.TXT for details.
75f9d3106SEnrico Granata //
85f9d3106SEnrico Granata //===----------------------------------------------------------------------===//
95f9d3106SEnrico Granata 
105f9d3106SEnrico Granata #include "CPlusPlusLanguage.h"
115f9d3106SEnrico Granata 
125f9d3106SEnrico Granata #include "lldb/Core/ConstString.h"
135f9d3106SEnrico Granata #include "lldb/Core/PluginManager.h"
145f9d3106SEnrico Granata 
155f9d3106SEnrico Granata using namespace lldb;
165f9d3106SEnrico Granata using namespace lldb_private;
175f9d3106SEnrico Granata 
185f9d3106SEnrico Granata void
195f9d3106SEnrico Granata CPlusPlusLanguage::Initialize()
205f9d3106SEnrico Granata {
215f9d3106SEnrico Granata     PluginManager::RegisterPlugin (GetPluginNameStatic(),
225f9d3106SEnrico Granata                                    "C++ Language",
235f9d3106SEnrico Granata                                    CreateInstance);
245f9d3106SEnrico Granata }
255f9d3106SEnrico Granata 
265f9d3106SEnrico Granata void
275f9d3106SEnrico Granata CPlusPlusLanguage::Terminate()
285f9d3106SEnrico Granata {
295f9d3106SEnrico Granata     PluginManager::UnregisterPlugin (CreateInstance);
305f9d3106SEnrico Granata }
315f9d3106SEnrico Granata 
325f9d3106SEnrico Granata lldb_private::ConstString
335f9d3106SEnrico Granata CPlusPlusLanguage::GetPluginNameStatic()
345f9d3106SEnrico Granata {
355f9d3106SEnrico Granata     static ConstString g_name("cplusplus");
365f9d3106SEnrico Granata     return g_name;
375f9d3106SEnrico Granata }
385f9d3106SEnrico Granata 
395f9d3106SEnrico Granata 
405f9d3106SEnrico Granata //------------------------------------------------------------------
415f9d3106SEnrico Granata // PluginInterface protocol
425f9d3106SEnrico Granata //------------------------------------------------------------------
435f9d3106SEnrico Granata lldb_private::ConstString
445f9d3106SEnrico Granata CPlusPlusLanguage::GetPluginName()
455f9d3106SEnrico Granata {
465f9d3106SEnrico Granata     return GetPluginNameStatic();
475f9d3106SEnrico Granata }
485f9d3106SEnrico Granata 
495f9d3106SEnrico Granata uint32_t
505f9d3106SEnrico Granata CPlusPlusLanguage::GetPluginVersion()
515f9d3106SEnrico Granata {
525f9d3106SEnrico Granata     return 1;
535f9d3106SEnrico Granata }
545f9d3106SEnrico Granata 
555f9d3106SEnrico Granata //------------------------------------------------------------------
565f9d3106SEnrico Granata // Static Functions
575f9d3106SEnrico Granata //------------------------------------------------------------------
585f9d3106SEnrico Granata Language *
595f9d3106SEnrico Granata CPlusPlusLanguage::CreateInstance (lldb::LanguageType language)
605f9d3106SEnrico Granata {
61*578c8a78SEnrico Granata     if (Language::LanguageIsCPlusPlus(language))
625f9d3106SEnrico Granata         return new CPlusPlusLanguage();
635f9d3106SEnrico Granata     return nullptr;
645f9d3106SEnrico Granata }
65