demangle: Update to llvm/llvm-project@ecbc812e0c
This commit is contained in:
		
							
								
								
									
										37
									
								
								externals/demangle/llvm/Demangle/Demangle.h
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								externals/demangle/llvm/Demangle/Demangle.h
									
									
									
									
										vendored
									
									
								
							@@ -12,6 +12,7 @@
 | 
			
		||||
 | 
			
		||||
#include <cstddef>
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <string_view>
 | 
			
		||||
 | 
			
		||||
namespace llvm {
 | 
			
		||||
/// This is a llvm local version of __cxa_demangle. Other than the name and
 | 
			
		||||
@@ -29,9 +30,10 @@ enum : int {
 | 
			
		||||
  demangle_success = 0,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
char *itaniumDemangle(const char *mangled_name, char *buf, size_t *n,
 | 
			
		||||
                      int *status);
 | 
			
		||||
 | 
			
		||||
/// Returns a non-NULL pointer to a NUL-terminated C style string
 | 
			
		||||
/// that should be explicitly freed, if successful. Otherwise, may return
 | 
			
		||||
/// nullptr if mangled_name is not a valid mangling or is nullptr.
 | 
			
		||||
char *itaniumDemangle(std::string_view mangled_name);
 | 
			
		||||
 | 
			
		||||
enum MSDemangleFlags {
 | 
			
		||||
  MSDF_None = 0,
 | 
			
		||||
@@ -40,10 +42,34 @@ enum MSDemangleFlags {
 | 
			
		||||
  MSDF_NoCallingConvention = 1 << 2,
 | 
			
		||||
  MSDF_NoReturnType = 1 << 3,
 | 
			
		||||
  MSDF_NoMemberType = 1 << 4,
 | 
			
		||||
  MSDF_NoVariableType = 1 << 5,
 | 
			
		||||
};
 | 
			
		||||
char *microsoftDemangle(const char *mangled_name, char *buf, size_t *n,
 | 
			
		||||
 | 
			
		||||
/// Demangles the Microsoft symbol pointed at by mangled_name and returns it.
 | 
			
		||||
/// Returns a pointer to the start of a null-terminated demangled string on
 | 
			
		||||
/// success, or nullptr on error.
 | 
			
		||||
/// If n_read is non-null and demangling was successful, it receives how many
 | 
			
		||||
/// bytes of the input string were consumed.
 | 
			
		||||
/// status receives one of the demangle_ enum entries above if it's not nullptr.
 | 
			
		||||
/// Flags controls various details of the demangled representation.
 | 
			
		||||
char *microsoftDemangle(std::string_view mangled_name, size_t *n_read,
 | 
			
		||||
                        int *status, MSDemangleFlags Flags = MSDF_None);
 | 
			
		||||
 | 
			
		||||
// Demangles a Rust v0 mangled symbol.
 | 
			
		||||
char *rustDemangle(std::string_view MangledName);
 | 
			
		||||
 | 
			
		||||
// Demangles a D mangled symbol.
 | 
			
		||||
char *dlangDemangle(std::string_view MangledName);
 | 
			
		||||
 | 
			
		||||
/// Attempt to demangle a string using different demangling schemes.
 | 
			
		||||
/// The function uses heuristics to determine which demangling scheme to use.
 | 
			
		||||
/// \param MangledName - reference to string to demangle.
 | 
			
		||||
/// \returns - the demangled string, or a copy of the input string if no
 | 
			
		||||
/// demangling occurred.
 | 
			
		||||
std::string demangle(std::string_view MangledName);
 | 
			
		||||
 | 
			
		||||
bool nonMicrosoftDemangle(std::string_view MangledName, std::string &Result);
 | 
			
		||||
 | 
			
		||||
/// "Partial" demangler. This supports demangling a string into an AST
 | 
			
		||||
/// (typically an intermediate stage in itaniumDemangle) and querying certain
 | 
			
		||||
/// properties or partially printing the demangled name.
 | 
			
		||||
@@ -59,7 +85,7 @@ struct ItaniumPartialDemangler {
 | 
			
		||||
  bool partialDemangle(const char *MangledName);
 | 
			
		||||
 | 
			
		||||
  /// Just print the entire mangled name into Buf. Buf and N behave like the
 | 
			
		||||
  /// second and third parameters to itaniumDemangle.
 | 
			
		||||
  /// second and third parameters to __cxa_demangle.
 | 
			
		||||
  char *finishDemangle(char *Buf, size_t *N) const;
 | 
			
		||||
 | 
			
		||||
  /// Get the base name of a function. This doesn't include trailing template
 | 
			
		||||
@@ -95,6 +121,7 @@ struct ItaniumPartialDemangler {
 | 
			
		||||
  bool isSpecialName() const;
 | 
			
		||||
 | 
			
		||||
  ~ItaniumPartialDemangler();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
  void *RootNode;
 | 
			
		||||
  void *Context;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user