Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

utf32.h File Reference

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

Go to the source code of this file.

Defines

#define UTF32_IS_SAFE(c, strict)
#define UTF32_IS_SINGLE(uchar)   1
#define UTF32_IS_LEAD(uchar)   0
#define UTF32_IS_TRAIL(uchar)   0
#define UTF32_NEED_MULTIPLE_UCHAR(c)   0
#define UTF32_CHAR_LENGTH(c)   1
#define UTF32_MAX_CHAR_LENGTH   1
#define UTF32_ARRAY_SIZE(size)   (size)
#define UTF32_GET_CHAR_UNSAFE(s, i, c)
#define UTF32_GET_CHAR_SAFE(s, start, i, length, c, strict)
#define UTF32_NEXT_CHAR_UNSAFE(s, i, c)
#define UTF32_APPEND_CHAR_UNSAFE(s, i, c)
#define UTF32_FWD_1_UNSAFE(s, i)
#define UTF32_FWD_N_UNSAFE(s, i, n)
#define UTF32_SET_CHAR_START_UNSAFE(s, i)
#define UTF32_NEXT_CHAR_SAFE(s, i, length, c, strict)
#define UTF32_APPEND_CHAR_SAFE(s, i, length, c)
#define UTF32_FWD_1_SAFE(s, i, length)
#define UTF32_FWD_N_SAFE(s, i, length, n)
#define UTF32_SET_CHAR_START_SAFE(s, start, i)
#define UTF32_PREV_CHAR_UNSAFE(s, i, c)
#define UTF32_BACK_1_UNSAFE(s, i)
#define UTF32_BACK_N_UNSAFE(s, i, n)
#define UTF32_SET_CHAR_LIMIT_UNSAFE(s, i)
#define UTF32_PREV_CHAR_SAFE(s, start, i, c, strict)
#define UTF32_BACK_1_SAFE(s, start, i)
#define UTF32_BACK_N_SAFE(s, start, i, n)
#define UTF32_SET_CHAR_LIMIT_SAFE(s, i, length)


Detailed Description

C API: UTF-32 macros.

This file defines macros to deal with UTF-32 code units and code points. Signatures and semantics are the same as for the similarly named macros in utf16.h. utf32.h is included by utf.h after unicode/umachine.h and some common definitions.

Usage: ICU coding guidelines for if() statements should be followed when using these macros. Compound statements (curly braces {}) must be used for if-else-while... bodies and all macro statements should be terminated with semicolon.


Define Documentation

#define UTF32_APPEND_CHAR_SAFE s,
i,
length,
 ) 
 

Value:

{ \
    if((uint32_t)(c)<=0x10ffff) { \
        (s)[(i)++]=(c); \
    } else   { \
        (s)[(i)++]=0xfffd; \
    } \
}

#define UTF32_APPEND_CHAR_UNSAFE s,
i,
 ) 
 

Value:

{ \
    (s)[(i)++]=(c); \
}

#define UTF32_BACK_1_SAFE s,
start,
 ) 
 

Value:

{ \
    --(i); \
}

#define UTF32_BACK_1_UNSAFE s,
 ) 
 

Value:

{ \
    --(i); \
}

#define UTF32_BACK_N_SAFE s,
start,
i,
 ) 
 

Value:

{ \
    (i)-=(n); \
    if((i)<(start)) { \
        (i)=(start); \
    } \
}

#define UTF32_BACK_N_UNSAFE s,
i,
 ) 
 

Value:

{ \
    (i)-=(n); \
}

#define UTF32_FWD_1_SAFE s,
i,
length   ) 
 

Value:

{ \
    ++(i); \
}

#define UTF32_FWD_1_UNSAFE s,
 ) 
 

Value:

{ \
    ++(i); \
}

#define UTF32_FWD_N_SAFE s,
i,
length,
 ) 
 

Value:

{ \
    if(((i)+=(n))>(length)) { \
        (i)=(length); \
    } \
}

#define UTF32_FWD_N_UNSAFE s,
i,
 ) 
 

Value:

{ \
    (i)+=(n); \
}

#define UTF32_GET_CHAR_SAFE s,
start,
i,
length,
c,
strict   ) 
 

Value:

{ \
    (c)=(s)[i]; \
    if(!UTF32_IS_SAFE(c, strict)) { \
        (c)=UTF_ERROR_VALUE; \
    } \
}

#define UTF32_GET_CHAR_UNSAFE s,
i,
 ) 
 

Value:

{ \
    (c)=(s)[i]; \
}

#define UTF32_IS_SAFE c,
strict   ) 
 

Value:

(!(strict) ? \
        (uint32_t)(c)<=0x10ffff : \
        UTF_IS_UNICODE_CHAR(c))

#define UTF32_NEXT_CHAR_SAFE s,
i,
length,
c,
strict   ) 
 

Value:

{ \
    (c)=(s)[(i)++]; \
    if(!UTF32_IS_SAFE(c, strict)) { \
        (c)=UTF_ERROR_VALUE; \
    } \
}

#define UTF32_NEXT_CHAR_UNSAFE s,
i,
 ) 
 

Value:

{ \
    (c)=(s)[(i)++]; \
}

#define UTF32_PREV_CHAR_SAFE s,
start,
i,
c,
strict   ) 
 

Value:

{ \
    (c)=(s)[--(i)]; \
    if(!UTF32_IS_SAFE(c, strict)) { \
        (c)=UTF_ERROR_VALUE; \
    } \
}

#define UTF32_PREV_CHAR_UNSAFE s,
i,
 ) 
 

Value:

{ \
    (c)=(s)[--(i)]; \
}

#define UTF32_SET_CHAR_LIMIT_SAFE s,
i,
length   ) 
 

Value:

{ \
}

#define UTF32_SET_CHAR_LIMIT_UNSAFE s,
 ) 
 

Value:

{ \
}

#define UTF32_SET_CHAR_START_SAFE s,
start,
 ) 
 

Value:

{ \
}

#define UTF32_SET_CHAR_START_UNSAFE s,
 ) 
 

Value:

{ \
}


Generated on Sun Jan 18 22:55:43 2004 for ICU 2.1 by doxygen 1.3.4