summaryrefslogtreecommitdiffstats
path: root/include/llvm/Debugger/SourceLanguage.h
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2009-06-02 17:52:33 +0000
committered <ed@FreeBSD.org>2009-06-02 17:52:33 +0000
commit3277b69d734b9c90b44ebde4ede005717e2c3b2e (patch)
tree64ba909838c23261cace781ece27d106134ea451 /include/llvm/Debugger/SourceLanguage.h
downloadFreeBSD-src-3277b69d734b9c90b44ebde4ede005717e2c3b2e.zip
FreeBSD-src-3277b69d734b9c90b44ebde4ede005717e2c3b2e.tar.gz
Import LLVM, at r72732.
Diffstat (limited to 'include/llvm/Debugger/SourceLanguage.h')
-rw-r--r--include/llvm/Debugger/SourceLanguage.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/include/llvm/Debugger/SourceLanguage.h b/include/llvm/Debugger/SourceLanguage.h
new file mode 100644
index 0000000..a07dd97
--- /dev/null
+++ b/include/llvm/Debugger/SourceLanguage.h
@@ -0,0 +1,99 @@
+//===- SourceLanguage.h - Interact with source languages --------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the abstract SourceLanguage interface, which is used by the
+// LLVM debugger to parse source-language expressions and render program objects
+// into a human readable string. In general, these classes perform all of the
+// analysis and interpretation of the language-specific debugger information.
+//
+// This interface is designed to be completely stateless, so all methods are
+// const.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEBUGGER_SOURCELANGUAGE_H
+#define LLVM_DEBUGGER_SOURCELANGUAGE_H
+
+#include <string>
+
+namespace llvm {
+ class GlobalVariable;
+ class SourceFileInfo;
+ class SourceFunctionInfo;
+ class ProgramInfo;
+ class RuntimeInfo;
+
+ struct SourceLanguage {
+ virtual ~SourceLanguage() {}
+
+ /// getSourceLanguageName - This method is used to implement the 'show
+ /// language' command in the debugger.
+ virtual const char *getSourceLanguageName() const = 0;
+
+ //===------------------------------------------------------------------===//
+ // Methods used to implement debugger hooks.
+ //
+
+ /// printInfo - Implementing this method allows the debugger to use
+ /// language-specific 'info' extensions, e.g., 'info selectors' for objc.
+ /// This method should return true if the specified string is recognized.
+ ///
+ virtual bool printInfo(const std::string &What) const {
+ return false;
+ }
+
+ /// lookupFunction - Given a textual function name, return the
+ /// SourceFunctionInfo descriptor for that function, or null if it cannot be
+ /// found. If the program is currently running, the RuntimeInfo object
+ /// provides information about the current evaluation context, otherwise it
+ /// will be null.
+ ///
+ virtual SourceFunctionInfo *lookupFunction(const std::string &FunctionName,
+ ProgramInfo &PI,
+ RuntimeInfo *RI = 0) const {
+ return 0;
+ }
+
+
+ //===------------------------------------------------------------------===//
+ // Methods used to parse various pieces of program information.
+ //
+
+ /// createSourceFileInfo - This method can be implemented by the front-end
+ /// if it needs to keep track of information beyond what the debugger
+ /// requires.
+ virtual SourceFileInfo *
+ createSourceFileInfo(const GlobalVariable *Desc, ProgramInfo &PI) const;
+
+ /// createSourceFunctionInfo - This method can be implemented by the derived
+ /// SourceLanguage if it needs to keep track of more information than the
+ /// SourceFunctionInfo has.
+ virtual SourceFunctionInfo *
+ createSourceFunctionInfo(const GlobalVariable *Desc, ProgramInfo &PI) const;
+
+
+ //===------------------------------------------------------------------===//
+ // Static methods used to get instances of various source languages.
+ //
+
+ /// get - This method returns a source-language instance for the specified
+ /// Dwarf 3 language identifier. If the language is unknown, an object is
+ /// returned that can support some minimal operations, but is not terribly
+ /// bright.
+ static const SourceLanguage &get(unsigned ID);
+
+ /// get*Instance() - These methods return specific instances of languages.
+ ///
+ static const SourceLanguage &getCFamilyInstance();
+ static const SourceLanguage &getCPlusPlusInstance();
+ static const SourceLanguage &getUnknownLanguageInstance();
+ };
+}
+
+#endif
OpenPOWER on IntegriCloud