# demangle module

`binaryninja.demangle.demangle_gnu3`(arch, ...) |
`binaryninja.demangle.demangle_ms`(arch, ...) | `demangle_ms` demangles a mangled Microsoft Visual Studio C++ name to a Type object.
`binaryninja.demangle.get_qualified_name`(names) | `get_qualified_name` gets a qualified name for the provied name list.
`binaryninja.demangle.pyNativeStr`(arg) |
`binaryninja.demangle.range`(*args) | A Python2 and Python3 Compatible Range Generator

`binaryninja.demangle.``demangle_gnu3`(arch, mangled_name)

`binaryninja.demangle.``demangle_ms`(arch, mangled_name)

  `demangle_ms` demangles a mangled Microsoft Visual Studio C++ name to a Type object.

  Parameters:

  - arch (Architecture) – Architecture for the symbol. Required for pointer and integer sizes.
  - mangled_name (str) – a mangled Microsoft Visual Studio C++ name

  Returns: | returns tuple of (Type, demangled_name) or (None, mangled_name) on error
  Return type: | Tuple

  Example:

      >>> demangle_ms(Architecture["x86_64"], "?testf@Foobar@@SA?AW4foo@1@W421@@Z")
      (<type: public: static enum Foobar::foo __cdecl (enum Foobar::foo)>, ['Foobar', 'testf'])
      >>>

`binaryninja.demangle.``get_qualified_name`(names)

  `get_qualified_name` gets a qualified name for the provied name list.

  Parameters: | names (list(str)) – name list to qualify
  Returns: | a qualified name
  Return type: | str

  Example:

      >>> type, name = demangle_ms(Architecture["x86_64"], "?testf@Foobar@@SA?AW4foo@1@W421@@Z")
      >>> get_qualified_name(name)
      'Foobar::testf'
      >>>