# dmd.cppmangle

Do mangling for C++ linkage.

#### Discussion

This is the POSIX side of the implementation. It exports two functions to C++, `toCppMangleItanium` and `cppTypeInfoMangleItanium`.

#### Authors

Walter Bright, http://www.digitalmars.com

#### License

Boost License 1.0

Source: cppmangle.d

Documentation: https://dlang.org/phobos/dmd_cppmangle.html

Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/cppmangle.d

References: Follows Itanium C++ ABI 1.86 section 5.1 http://refspecs.linux-foundation.org/cxxabi-1.86.html#mangling which is where the grammar comments come from.

#### Bugs

https://issues.dlang.org/query.cgi enter `C++, mangling` as the keywords.

- `toCppMangleItanium`

  #### Declaration

  `const(char)* `toCppMangleItanium`(Dsymbol `s`);`

- `cppTypeInfoMangleItanium`

  #### Declaration

  `const(char)* `cppTypeInfoMangleItanium`(Dsymbol `s`);`

- `cppThunkMangleItanium`

  #### Declaration

  `const(char)* `cppThunkMangleItanium`(FuncDeclaration `fd`, int `offset`);`

- `isPrimaryDtor`

  #### Declaration

  `bool `isPrimaryDtor`(const Dsymbol `sym`);`

  Determine if `sym` is the 'primary' destructor, that is, the most-aggregate destructor (the one that is defined as _xdtor)

  #### Parameters

  `Dsymbol `sym`` | Dsymbol

  #### Return Value

  `true` if `sym` is the primary destructor for an aggregate