Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

utf16.h File Reference

C API: UTF-16 macros. More...

Go to the source code of this file.

Defines

#define UTF_IS_FIRST_SURROGATE(uchar)    (((uchar)&0xfffffc00)==0xd800)
#define UTF_IS_SECOND_SURROGATE(uchar)    (((uchar)&0xfffffc00)==0xdc00)
#define UTF_IS_SURROGATE_FIRST(c)    (((c)&0x400)==0)
#define UTF_SURROGATE_OFFSET   ((0xd800<<10UL)+0xdc00-0x10000)
#define UTF16_GET_PAIR_VALUE(first, second)
#define UTF16_IS_SINGLE(uchar)    !UTF_IS_SURROGATE(uchar)
#define UTF16_IS_LEAD(uchar)    UTF_IS_FIRST_SURROGATE(uchar)
#define UTF16_IS_TRAIL(uchar)    UTF_IS_SECOND_SURROGATE(uchar)
#define UTF16_NEED_MULTIPLE_UCHAR(c)    ((uint32_t)(c)>0xffff)
#define UTF16_CHAR_LENGTH(c)    ((uint32_t)(c)<=0xffff ? 1 : 2)
#define UTF16_MAX_CHAR_LENGTH   2
#define UTF16_ARRAY_SIZE(size)    (size)
#define UTF16_GET_CHAR_UNSAFE(s, i, c)
#define UTF16_GET_CHAR_SAFE(s, start, i, length, c, strict)
#define UTF16_NEXT_CHAR_UNSAFE(s, i, c)
#define UTF16_APPEND_CHAR_UNSAFE(s, i, c)
#define UTF16_FWD_1_UNSAFE(s, i)
#define UTF16_FWD_N_UNSAFE(s, i, n)
#define UTF16_SET_CHAR_START_UNSAFE(s, i)
#define UTF16_NEXT_CHAR_SAFE(s, i, length, c, strict)
#define UTF16_APPEND_CHAR_SAFE(s, i, length, c)
#define UTF16_FWD_1_SAFE(s, i, length)
#define UTF16_FWD_N_SAFE(s, i, length, n)
#define UTF16_SET_CHAR_START_SAFE(s, start, i)
#define UTF16_PREV_CHAR_UNSAFE(s, i, c)
#define UTF16_BACK_1_UNSAFE(s, i)
#define UTF16_BACK_N_UNSAFE(s, i, n)
#define UTF16_SET_CHAR_LIMIT_UNSAFE(s, i)
#define UTF16_PREV_CHAR_SAFE(s, start, i, c, strict)
#define UTF16_BACK_1_SAFE(s, start, i)
#define UTF16_BACK_N_SAFE(s, start, i, n)
#define UTF16_SET_CHAR_LIMIT_SAFE(s, start, i, length)


Detailed Description

C API: UTF-16 macros.

This file defines macros to deal with UTF-16 code units and code points. "Safe" macros check for length overruns and illegal sequences, and also for irregular sequences when the strict option is set. "Unsafe" macros are designed for maximum speed. utf16.h is included by utf.h after unicode/umachine.h and some common definitions.

Definition in file utf16.h.


Define Documentation

#define UTF16_APPEND_CHAR_SAFE( s, i, length, c )
 

Initializer:

{ \
    if((uint32_t)(c)<=0xffff) { \
        (s)[(i)++]=(uint16_t)(c); \
    } else if((uint32_t)(c)<=0x10ffff) { \
        if((i)+1<(length)) { \
            (s)[(i)++]=(uint16_t)(((c)>>10)+0xd7c0); \
            (s)[(i)++]=(uint16_t)(((c)&0x3ff)|0xdc00); \
        } else   { \
            (s)[(i)++]=UTF_ERROR_VALUE; \
        } \
    } else   { \
        (s)[(i)++]=UTF_ERROR_VALUE; \
    } \
}

Definition at line 186 of file utf16.h.

#define UTF16_APPEND_CHAR_UNSAFE( s, i, c )
 

Initializer:

{ \
    if((uint32_t)(c)<=0xffff) { \
        (s)[(i)++]=(uint16_t)(c); \
    } else { \
        (s)[(i)++]=(uint16_t)(((c)>>10)+0xd7c0); \
        (s)[(i)++]=(uint16_t)(((c)&0x3ff)|0xdc00); \
    } \
}

Definition at line 127 of file utf16.h.

#define UTF16_ARRAY_SIZE( size )   (size)
 

Definition at line 57 of file utf16.h.

#define UTF16_BACK_1_SAFE( s, start, i )
 

Initializer:

{ \
    if(UTF_IS_SECOND_SURROGATE((s)[--(i)]) && (i)>(start) && UTF_IS_FIRST_SURROGATE((s)[(i)-1])) { \
        --(i); \
    } \
}

Definition at line 294 of file utf16.h.

#define UTF16_BACK_1_UNSAFE( s, i )
 

Initializer:

{ \
    if(UTF_IS_SECOND_SURROGATE((s)[--(i)])) { \
        --(i); \
    } \
}

Definition at line 244 of file utf16.h.

#define UTF16_BACK_N_SAFE( s, start, i, n )
 

Initializer:

{ \
    UTextOffset __N=(n); \
    while(__N>0 && (i)>(start)) { \
        UTF16_BACK_1_SAFE(s, start, i); \
        --__N; \
    } \
}

Definition at line 300 of file utf16.h.

#define UTF16_BACK_N_UNSAFE( s, i, n )
 

Initializer:

{ \
    UTextOffset __N=(n); \
    while(__N>0) { \
        UTF16_BACK_1_UNSAFE(s, i); \
        --__N; \
    } \
}

Definition at line 250 of file utf16.h.

#define UTF16_CHAR_LENGTH( c )   ((uint32_t)(c)<=0xffff ? 1 : 2)
 

Definition at line 53 of file utf16.h.

#define UTF16_FWD_1_SAFE( s, i, length )
 

Initializer:

{ \
    if(UTF_IS_FIRST_SURROGATE((s)[(i)++]) && (i)<(length) && UTF_IS_SECOND_SURROGATE((s)[i])) { \
        ++(i); \
    } \
}

Definition at line 201 of file utf16.h.

#define UTF16_FWD_1_UNSAFE( s, i )
 

Initializer:

{ \
    if(UTF_IS_FIRST_SURROGATE((s)[(i)++])) { \
        ++(i); \
    } \
}

Definition at line 136 of file utf16.h.

#define UTF16_FWD_N_SAFE( s, i, length, n )
 

Initializer:

{ \
    UTextOffset __N=(n); \
    while(__N>0 && (i)<(length)) { \
        UTF16_FWD_1_SAFE(s, i, length); \
        --__N; \
    } \
}

Definition at line 207 of file utf16.h.

#define UTF16_FWD_N_UNSAFE( s, i, n )
 

Initializer:

{ \
    UTextOffset __N=(n); \
    while(__N>0) { \
        UTF16_FWD_1_UNSAFE(s, i); \
        --__N; \
    } \
}

Definition at line 142 of file utf16.h.

#define UTF16_GET_CHAR_SAFE( s, start, i, length, c, strict )
 

Initializer:

{ \
    (c)=(s)[i]; \
    if(UTF_IS_SURROGATE(c)) { \
        uint16_t __c2; \
        if(UTF_IS_SURROGATE_FIRST(c)) { \
            if((i)+1<(length) && UTF_IS_SECOND_SURROGATE(__c2=(s)[(i)+1])) { \
                (c)=UTF16_GET_PAIR_VALUE((c), __c2); \
                  \
            } else if(strict) {\
                  \
                (c)=UTF_ERROR_VALUE; \
            } \
        } else { \
            if((i)>(start) && UTF_IS_FIRST_SURROGATE(__c2=(s)[(i)-1])) { \
                (c)=UTF16_GET_PAIR_VALUE(__c2, (c)); \
                  \
            } else if(strict) {\
                  \
                (c)=UTF_ERROR_VALUE; \
            } \
        } \
      \
    } \
}

Definition at line 80 of file utf16.h.

#define UTF16_GET_CHAR_UNSAFE( s, i, c )
 

Initializer:

{ \
    (c)=(s)[i]; \
    if(UTF_IS_SURROGATE(c)) { \
        if(UTF_IS_SURROGATE_FIRST(c)) { \
            (c)=UTF16_GET_PAIR_VALUE((c), (s)[(i)+1]); \
        } else { \
            (c)=UTF16_GET_PAIR_VALUE((s)[(i)-1], (c)); \
        } \
    } \
}

Definition at line 69 of file utf16.h.

#define UTF16_GET_PAIR_VALUE( first, second )
 

Initializer:

\
    (((first)<<10UL)+(second)-UTF_SURROGATE_OFFSET)

Definition at line 43 of file utf16.h.

#define UTF16_IS_LEAD( uchar )   UTF_IS_FIRST_SURROGATE(uchar)
 

Definition at line 48 of file utf16.h.

#define UTF16_IS_SINGLE( uchar )   !UTF_IS_SURROGATE(uchar)
 

Definition at line 47 of file utf16.h.

#define UTF16_IS_TRAIL( uchar )   UTF_IS_SECOND_SURROGATE(uchar)
 

Definition at line 49 of file utf16.h.

#define UTF16_MAX_CHAR_LENGTH   2
 

Definition at line 54 of file utf16.h.

#define UTF16_NEED_MULTIPLE_UCHAR( c )   ((uint32_t)(c)>0xffff)
 

Definition at line 52 of file utf16.h.

#define UTF16_NEXT_CHAR_SAFE( s, i, length, c, strict )
 

Initializer:

{ \
    (c)=(s)[(i)++]; \
    if(UTF_IS_FIRST_SURROGATE(c)) { \
        uint16_t __c2; \
        if((i)<(length) && UTF_IS_SECOND_SURROGATE(__c2=(s)[(i)])) { \
            ++(i); \
            (c)=UTF16_GET_PAIR_VALUE((c), __c2); \
              \
        } else if(strict) {\
              \
            (c)=UTF_ERROR_VALUE; \
        } \
    } else if(strict && UTF_IS_SECOND_SURROGATE(c)) { \
          \
        (c)=UTF_ERROR_VALUE; \
      \
    } \
}

Definition at line 167 of file utf16.h.

#define UTF16_NEXT_CHAR_UNSAFE( s, i, c )
 

Initializer:

{ \
    (c)=(s)[(i)++]; \
    if(UTF_IS_FIRST_SURROGATE(c)) { \
        (c)=UTF16_GET_PAIR_VALUE((c), (s)[(i)++]); \
    } \
}

Definition at line 120 of file utf16.h.

#define UTF16_PREV_CHAR_SAFE( s, start, i, c, strict )
 

Initializer:

{ \
    (c)=(s)[--(i)]; \
    if(UTF_IS_SECOND_SURROGATE(c)) { \
        uint16_t __c2; \
        if((i)>(start) && UTF_IS_FIRST_SURROGATE(__c2=(s)[(i)-1])) { \
            --(i); \
            (c)=UTF16_GET_PAIR_VALUE(__c2, (c)); \
              \
        } else if(strict) {\
              \
            (c)=UTF_ERROR_VALUE; \
        } \
    } else if(strict && UTF_IS_FIRST_SURROGATE(c)) { \
          \
        (c)=UTF_ERROR_VALUE; \
      \
    } \
}

Definition at line 275 of file utf16.h.

#define UTF16_PREV_CHAR_UNSAFE( s, i, c )
 

Initializer:

{ \
    (c)=(s)[--(i)]; \
    if(UTF_IS_SECOND_SURROGATE(c)) { \
        (c)=UTF16_GET_PAIR_VALUE((s)[--(i)], (c)); \
    } \
}

Definition at line 237 of file utf16.h.

#define UTF16_SET_CHAR_LIMIT_SAFE( s, start, i, length )
 

Initializer:

{ \
    if((start)<(i) && (i)<(length) && UTF_IS_FIRST_SURROGATE((s)[(i)-1]) && UTF_IS_SECOND_SURROGATE((s)[i])) { \
        ++(i); \
    } \
}

Definition at line 308 of file utf16.h.

#define UTF16_SET_CHAR_LIMIT_UNSAFE( s, i )
 

Initializer:

{ \
    if(UTF_IS_FIRST_SURROGATE((s)[(i)-1])) { \
        ++(i); \
    } \
}

Definition at line 267 of file utf16.h.

#define UTF16_SET_CHAR_START_SAFE( s, start, i )
 

Initializer:

{ \
    if(UTF_IS_SECOND_SURROGATE((s)[i]) && (i)>(start) && UTF_IS_FIRST_SURROGATE((s)[(i)-1])) { \
        --(i); \
    } \
}

Definition at line 215 of file utf16.h.

#define UTF16_SET_CHAR_START_UNSAFE( s, i )
 

Initializer:

{ \
    if(UTF_IS_SECOND_SURROGATE((s)[i])) { \
        --(i); \
    } \
}

Definition at line 159 of file utf16.h.

#define UTF_IS_FIRST_SURROGATE( uchar )   (((uchar)&0xfffffc00)==0xd800)
 

Definition at line 35 of file utf16.h.

#define UTF_IS_SECOND_SURROGATE( uchar )   (((uchar)&0xfffffc00)==0xdc00)
 

Definition at line 36 of file utf16.h.

#define UTF_IS_SURROGATE_FIRST( c )   (((c)&0x400)==0)
 

Definition at line 38 of file utf16.h.

#define UTF_SURROGATE_OFFSET   ((0xd800<<10UL)+0xdc00-0x10000)
 

Definition at line 41 of file utf16.h.


Generated at Fri Dec 15 12:12:59 2000 for ICU 1.7 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000