openbmc/build/tmp/deploy/sdk/witherspoon-2019-08-08/sysroots/armv6-openbmc-linux-gnueabi/usr/src/debug/systemd/1_242+AUTOINC+db2e367bfc-r0/git/src/basic/utf8.c
size_t utf8_encode_unichar(char* out_utf8, char32_t g)
{

    if (g < (1 << 7))
    {
        if (out_utf8)
            out_utf8[0] = g & 0x7f;
        return 1;
    }
    else if (g < (1 << 11))
    {
        if (out_utf8)
        {
            out_utf8[0] = 0xc0 | ((g >> 6) & 0x1f);
            out_utf8[1] = 0x80 | (g & 0x3f);
        }
        return 2;
    }
    else if (g < (1 << 16))
    {
        if (out_utf8)
        {
            out_utf8[0] = 0xe0 | ((g >> 12) & 0x0f);
            out_utf8[1] = 0x80 | ((g >> 6) & 0x3f);
            out_utf8[2] = 0x80 | (g & 0x3f);
        }
        return 3;
    }
    else if (g < (1 << 21))
    {
        if (out_utf8)
        {
            out_utf8[0] = 0xf0 | ((g >> 18) & 0x07);
            out_utf8[1] = 0x80 | ((g >> 12) & 0x3f);
            out_utf8[2] = 0x80 | ((g >> 6) & 0x3f);
            out_utf8[3] = 0x80 | (g & 0x3f);
        }
        return 4;
    }

    return 0;
}
/**
 * utf8_encode_unichar() - Encode single UCS-4 character as UTF-8
 * @out_utf8: output buffer of at least 4 bytes or NULL
 * @g: UCS-4 character to encode
 *
 * This encodes a single UCS-4 character as UTF-8 and writes it into @out_utf8.
 * The length of the character is returned. It is not zero-terminated! If the
 * output buffer is NULL, only the length is returned.
 *
 * Returns: The length in bytes that the UTF-8 representation does or would
 *          occupy.
 */
Encode single UCS-4 character as UTF-8
@out_utf8: output buffer of at least 4 bytes or NULL
@g: UCS-4 character to encode

This encodes a single UCS-4 character as UTF-8 and writes it into @out_utf8.
The length of the character is returned. It is not zero-terminated. If the
output buffer is NULL, only the length is returned.

The length in bytes that the UTF-8 representation does or would
occupy.
Encode single UCS - 4 character as UTF - 8 @out_utf8 : output buffer of at least 4 bytes or NULL @g : UCS - 4 character to encode This encodes a single UCS - 4 character as UTF - 8 and writes it into @out_utf8 . The length of the character is returned . It is not zero - terminated . If the output buffer is NULL only the length is returned . The length in bytes that the UTF - 8 representation does or would occupy .
size_t utf8_encode_unichar(char* out_utf8, char32_t g)
{
    if (g < (1 << 7))
    {
        if (out_utf8)
            out_utf8[0] = g & 0x7f;
        return 1;
    }
    else if (g < (1 << 11))
    {
        if (out_utf8)
        {
            out_utf8[0] = 0xc0 | ((g >> 6) & 0x1f);
            out_utf8[1] = 0x80 | (g & 0x3f);
        }
        return 2;
    }
    else if (g < (1 << 16))
    {
        if (out_utf8)
        {
            out_utf8[0] = 0xe0 | ((g >> 12) & 0x0f);
            out_utf8[1] = 0x80 | ((g >> 6) & 0x3f);
            out_utf8[2] = 0x80 | (g & 0x3f);
        }
        return 3;
    }
    else if (g < (1 << 21))
    {
        if (out_utf8)
        {
            out_utf8[0] = 0xf0 | ((g >> 18) & 0x07);
            out_utf8[1] = 0x80 | ((g >> 12) & 0x3f);
            out_utf8[2] = 0x80 | ((g >> 6) & 0x3f);
            out_utf8[3] = 0x80 | (g & 0x3f);
        }
        return 4;
    }
    return 0;
}
size_t utf8_encode_unichar ( char * out_utf8 , char32_t g ) { if ( g < ( 1 << 7 ) ) { if ( out_utf8 ) out_utf8 [ 0 ] = g & 0x7f ; return 1 ; } else if ( g < ( 1 << 11 ) ) { if ( out_utf8 ) { out_utf8 [ 0 ] = 0xc0 | ( ( g >> 6 ) & 0x1f ) ; out_utf8 [ 1 ] = 0x80 | ( g & 0x3f ) ; } return 2 ; } else if ( g < ( 1 << 16 ) ) { if ( out_utf8 ) { out_utf8 [ 0 ] = 0xe0 | ( ( g >> 12 ) & 0x0f ) ; out_utf8 [ 1 ] = 0x80 | ( ( g >> 6 ) & 0x3f ) ; out_utf8 [ 2 ] = 0x80 | ( g & 0x3f ) ; } return 3 ; } else if ( g < ( 1 << 21 ) ) { if ( out_utf8 ) { out_utf8 [ 0 ] = 0xf0 | ( ( g >> 18 ) & 0x07 ) ; out_utf8 [ 1 ] = 0x80 | ( ( g >> 12 ) & 0x3f ) ; out_utf8 [ 2 ] = 0x80 | ( ( g >> 6 ) & 0x3f ) ; out_utf8 [ 3 ] = 0x80 | ( g & 0x3f ) ; } return 4 ; } return 0 ; }
utf8_encode_unichar() - Encode single UCS-4 character as UTF-8
 @out_utf8: output buffer of at least 4 bytes or NULL
 @g: UCS-4 character to encode
utf8_encode_unichar () - Encode single UCS - 4 character as UTF - 8 @out_utf8 : output buffer of at least 4 bytes or NULL @g : UCS - 4 character to encode