[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.15.5 Squangled type compression

Squangling (enabled with the `-fsquangle' option), utilizes the `B' code to indicate reuse of a previously seen type within an indentifier. Types are recognized in a left to right manner and given increasing values, which are appended to the code in the standard manner. Ie, multiple digit numbers are delimited by `_' characters. A type is considered to be any non primitive type, regardless of whether its a parameter, template parameter, or entire template. Certain codes are considered modifiers of a type, and are not included as part of the type. These are the `C', `V', `P', `A', `R', `U' and `u' codes, denoting constant, volatile, pointer, array, reference, unsigned, and restrict. These codes may precede a `B' type in order to make the required modifications to the type.

For example:
 
template <class T> class class1 { };

template <class T> class class2 { };

class class3 { };

int f(class2<class1<class3> > a ,int b, const class1<class3>&c, class3 *d) { }

    B0 -> class2<class1<class3>
    B1 -> class1<class3>
    B2 -> class3
Produces the mangled name `f__FGt6class21Zt6class11Z6class3iRCB1PB2'. The int parameter is a basic type, and does not receive a B encoding...



This document was generated by system on December, 2 2004 using texi2html