dlls/ntdll/locale.c
static void canonical_order_string( WCHAR *str, unsigned int len )
{
    unsigned int ch, i, r, next = 0;

    for (i = 0; i < len; i += r)
    {
        if (!(r = get_utf16( str + i, len - i, &ch ))) return;
        if (i && is_starter( ch ))
        {
            if (i > next + 1) /* at least two successive non-starters */
                canonical_order_substring( str + next, i - next );
            next = i + r;
        }
    }
    if (i > next + 1) canonical_order_substring( str + next, i - next );
}
/****************************************************************************
 *             canonical_order_string
 *
 * Reorder the string into canonical order - D108/D109.
 *
 * Starters (chars with combining class == 0) don't move, so look for continuous
 * substrings of non-starters and only reorder those.
 */
canonical_order_string
Reorder the string into canonical order - D108/D109.

Starters (chars with combining class == 0) don't move, so look for continuous
substrings of non-starters and only reorder those.
canonical_order_string Reorder the string into canonical order - D108 / D109 . Starters ( chars with combining class == 0 ) don ' t move so look for continuous substrings of non - starters and only reorder those .
static void canonical_order_string( WCHAR *str, unsigned int len )
{
    unsigned int ch, i, r, next = 0;
    for (i = 0; i < len; i += r)
    {
        if (!(r = get_utf16( str + i, len - i, &ch ))) return;
        if (i && is_starter( ch ))
        {
            if (i > next + 1) 
                canonical_order_substring( str + next, i - next );
            next = i + r;
        }
    }
    if (i > next + 1) canonical_order_substring( str + next, i - next );
}
static void canonical_order_string ( WCHAR * str , unsigned int len ) { unsigned int ch , i , r , next = 0 ; for ( i = 0 ; i < len ; i += r ) { if ( ! ( r = get_utf16 ( str + i , len - i , & ch ) ) ) return ; if ( i && is_starter ( ch ) ) { if ( i > next + 1 ) canonical_order_substring ( str + next , i - next ) ; next = i + r ; } } if ( i > next + 1 ) canonical_order_substring ( str + next , i - next ) ; }
canonical_order_string
 Reorder the string into canonical order - D108/D109.
canonical_order_string Reorder the string into canonical order - D108 / D109 .
/* at least two successive non-starters */