def split_suffix(symbol):
    """
    Splits a symbol such as `__gttf2@GCC_3.0` into a triple representing its
    function name (__gttf2), version name (GCC_3.0), and version number (300).

    The version number acts as a priority. Since earlier versions are more
    accessible and are likely to be used more, the lower the number is, the higher
    its priortiy. A symbol that has a '@@' instead of '@' has been designated by
    the linker as the default symbol, and is awarded a priority of -1.
    """
    if '@' not in symbol:
        return None
    data = [i for i in filter(lambda s: s, symbol.split('@'))]
    _, version = data[-1].split('_')
    version = version.replace('.', '')
    priority = -1 if '@@' in symbol else int(version + '0' *
                                             (3 - len(version)))
    return data[0], data[1], priority