mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10684 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			100 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //===- SourceLanguage.h - Interact with source languages --------*- C++ -*-===//
 | |
| // 
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file was developed by the LLVM research group and 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
 |