Class: Unmangler::MSVC
Defined Under Namespace
Classes: DataType, ParsedSymbol
Constant Summary collapse
- UNDNAME_COMPLETE =
0x0000- UNDNAME_NO_LEADING_UNDERSCORES =
Don’t show __ in calling convention
0x0001- UNDNAME_NO_MS_KEYWORDS =
Don’t show calling convention at all
0x0002- UNDNAME_NO_FUNCTION_RETURNS =
Don’t show function/method return value
0x0004- UNDNAME_NO_ALLOCATION_MODEL =
0x0008- UNDNAME_NO_ALLOCATION_LANGUAGE =
0x0010- UNDNAME_NO_MS_THISTYPE =
0x0020- UNDNAME_NO_CV_THISTYPE =
0x0040- UNDNAME_NO_THISTYPE =
0x0060- UNDNAME_NO_ACCESS_SPECIFIERS =
Don’t show access specifier = public/protected/private
0x0080- UNDNAME_NO_THROW_SIGNATURES =
0x0100- UNDNAME_NO_MEMBER_TYPE =
Don’t show static/virtual specifier
0x0200- UNDNAME_NO_RETURN_UDT_MODEL =
0x0400- UNDNAME_32_BIT_DECODE =
0x0800- UNDNAME_NAME_ONLY =
Only report the variable/method name
0x1000- UNDNAME_NO_ARGUMENTS =
Don’t show method arguments
0x2000- UNDNAME_NO_SPECIAL_SYMS =
0x4000- UNDNAME_NO_COMPLEX_TYPE =
0x8000
Instance Method Summary collapse
Methods inherited from Base
#assert, #isdigit, #safe_unmangle, safe_unmangle, unmangle
Instance Method Details
#unmangle(mangled, flags = UNDNAME_COMPLETE) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/unmangler/msvc.rb', line 49 def unmangle mangled, flags = UNDNAME_COMPLETE if flags.is_a?(Hash) flags = flags.fetch(:args, true) ? UNDNAME_COMPLETE : UNDNAME_NAME_ONLY end if flags & UNDNAME_NAME_ONLY != 0 flags |= UNDNAME_NO_FUNCTION_RETURNS | UNDNAME_NO_ACCESS_SPECIFIERS | UNDNAME_NO_MEMBER_TYPE | UNDNAME_NO_ALLOCATION_LANGUAGE | UNDNAME_NO_COMPLEX_TYPE end sym = ParsedSymbol.new sym.flags = flags sym.current = StringPtr.new(mangled) symbol_demangle(sym) ? sym.result.strip : mangled end |