diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 | 
| commit | 14f1b3e8826ce43b978db93a62d1166055db5394 (patch) | |
| tree | 0a00ad8d3498783fe0193f3b656bca17c4c8697d /source/Plugins/Language/OCaml/OCamlLanguage.cpp | |
| parent | 4ee8c119c71a06dcad1e0fecc8c675e480e59337 (diff) | |
Notes
Diffstat (limited to 'source/Plugins/Language/OCaml/OCamlLanguage.cpp')
| -rw-r--r-- | source/Plugins/Language/OCaml/OCamlLanguage.cpp | 63 | 
1 files changed, 63 insertions, 0 deletions
| diff --git a/source/Plugins/Language/OCaml/OCamlLanguage.cpp b/source/Plugins/Language/OCaml/OCamlLanguage.cpp new file mode 100644 index 000000000000..ef9f2b567929 --- /dev/null +++ b/source/Plugins/Language/OCaml/OCamlLanguage.cpp @@ -0,0 +1,63 @@ +//===-- OCamlLanguage.cpp ----------------------------------------*- C++ +//-*-===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// C Includes +#include <string.h> +// C++ Includes +#include <functional> +#include <mutex> + +// Other libraries and framework includes +#include "llvm/ADT/StringRef.h" + +// Project includes +#include "OCamlLanguage.h" +#include "lldb/Core/ConstString.h" +#include "lldb/Core/PluginManager.h" +#include "lldb/DataFormatters/DataVisualization.h" +#include "lldb/DataFormatters/FormattersHelpers.h" +#include "lldb/Symbol/OCamlASTContext.h" + +using namespace lldb; +using namespace lldb_private; + +void OCamlLanguage::Initialize() { +  PluginManager::RegisterPlugin(GetPluginNameStatic(), "OCaml Language", +                                CreateInstance); +} + +void OCamlLanguage::Terminate() { +  PluginManager::UnregisterPlugin(CreateInstance); +} + +lldb_private::ConstString OCamlLanguage::GetPluginNameStatic() { +  static ConstString g_name("OCaml"); +  return g_name; +} + +lldb_private::ConstString OCamlLanguage::GetPluginName() { +  return GetPluginNameStatic(); +} + +uint32_t OCamlLanguage::GetPluginVersion() { return 1; } + +Language *OCamlLanguage::CreateInstance(lldb::LanguageType language) { +  if (language == eLanguageTypeOCaml) +    return new OCamlLanguage(); +  return nullptr; +} + +bool OCamlLanguage::IsNilReference(ValueObject &valobj) { +  if (!valobj.GetCompilerType().IsReferenceType()) +    return false; + +  // If we failed to read the value then it is not a nil reference. +  return valobj.GetValueAsUnsigned(UINT64_MAX) == 0; +} | 
