|  | /* | 
|  | ******************************************************************************* | 
|  | * | 
|  | *   Copyright (C) 2003, International Business Machines | 
|  | *   Corporation and others.  All Rights Reserved. | 
|  | * | 
|  | ******************************************************************************* | 
|  | *   file name:  sprpimpl.h | 
|  | *   encoding:   US-ASCII | 
|  | *   tab size:   8 (not used) | 
|  | *   indentation:4 | 
|  | * | 
|  | *   created on: 2003feb1 | 
|  | *   created by: Ram Viswanadha | 
|  | */ | 
|  |  | 
|  | #ifndef SPRPIMPL_H | 
|  | #define SPRPIMPL_H | 
|  |  | 
|  | #include "unicode/utypes.h" | 
|  | #include "unicode/ustring.h" | 
|  | #include "unicode/parseerr.h" | 
|  |  | 
|  | #if !UCONFIG_NO_IDNA | 
|  |  | 
|  | enum{ | 
|  | UIDNA_NO_VALUE          = 0x0000 , | 
|  | UIDNA_UNASSIGNED        = 0x0001 , | 
|  | UIDNA_PROHIBITED        = 0x0002 , | 
|  | UIDNA_MAP_NFKC          = 0x0003 , | 
|  | UIDNA_LABEL_SEPARATOR   = 0x0004 | 
|  | }; | 
|  | enum{ | 
|  | _IDNA_LENGTH_IN_MAPPING_TABLE = 0x0003 /*11*/ | 
|  | }; | 
|  | /* indexes[] value names */ | 
|  | enum { | 
|  | _IDNA_INDEX_TRIE_SIZE,             /* number of bytes in normalization trie */ | 
|  | _IDNA_INDEX_MAPPING_DATA_SIZE,     /* The array that contains the mapping   */ | 
|  | _IDNA_INDEX_TOP=3                  /* changing this requires a new formatVersion */ | 
|  | }; | 
|  |  | 
|  | enum { | 
|  | _IDNA_MAPPING_DATA_SIZE = 2000, | 
|  | _IDNA_MAP_TO_NOTHING = 0x7FF | 
|  | }; | 
|  |  | 
|  | #if defined(XP_CPLUSPLUS) | 
|  | static inline | 
|  | void uprv_syntaxError(const UChar* rules, | 
|  | int32_t pos, | 
|  | int32_t rulesLen, | 
|  | UParseError* parseError) | 
|  | { | 
|  | if(parseError == NULL){ | 
|  | return; | 
|  | } | 
|  | if(pos == rulesLen && rulesLen >0){ | 
|  | pos--; | 
|  | } | 
|  | parseError->offset = pos; | 
|  | parseError->line = 0 ; // we are not using line numbers | 
|  |  | 
|  | // for pre-context | 
|  | int32_t start = (pos <=U_PARSE_CONTEXT_LEN)? 0 : (pos - (U_PARSE_CONTEXT_LEN-1)); | 
|  | int32_t stop  = pos; | 
|  |  | 
|  | u_memcpy(parseError->preContext,rules+start,stop-start); | 
|  | //null terminate the buffer | 
|  | parseError->preContext[stop-start] = 0; | 
|  |  | 
|  | //for post-context | 
|  | start = pos; | 
|  | if(start<rulesLen) { | 
|  | U16_FWD_1(rules, start, rulesLen); | 
|  | } | 
|  |  | 
|  | stop  = ((pos+U_PARSE_CONTEXT_LEN)<= rulesLen )? (pos+(U_PARSE_CONTEXT_LEN)) : | 
|  | rulesLen; | 
|  | if(start < stop){ | 
|  | u_memcpy(parseError->postContext,rules+start,stop-start); | 
|  | //null terminate the buffer | 
|  | parseError->postContext[stop-start]= 0; | 
|  | } | 
|  |  | 
|  | } | 
|  | #endif | 
|  |  | 
|  | /* error codes for prototyping | 
|  | #define U_IDNA_ERROR_START                      U_ERROR_LIMIT | 
|  | #define U_IDNA_PROHIBITED_CODEPOINT_FOUND_ERROR ((UErrorCode)(U_IDNA_ERROR_START + 1)) | 
|  | #define U_IDNA_UNASSIGNED_CODEPOINT_FOUND_ERROR ((UErrorCode)(U_IDNA_ERROR_START + 2)) | 
|  | #define U_IDNA_CHECK_BIDI_ERROR                 ((UErrorCode)(U_IDNA_ERROR_START + 3)) | 
|  | #define U_IDNA_STD3_ASCII_RULES_ERROR           ((UErrorCode)(U_IDNA_ERROR_START + 4)) | 
|  | #define U_IDNA_ACE_PREFIX_ERROR                 ((UErrorCode)(U_IDNA_ERROR_START + 5)) | 
|  | #define U_IDNA_VERIFICATION_ERROR               ((UErrorCode)(U_IDNA_ERROR_START + 6)) | 
|  | #define U_IDNA_LABEL_TOO_LONG_ERROR                  ((UErrorCode)(U_IDNA_ERROR_START + 8)) | 
|  | */ | 
|  |  | 
|  | #endif /* #if !UCONFIG_NO_IDNA */ | 
|  |  | 
|  | #endif | 
|  |  | 
|  | /* | 
|  | * Hey, Emacs, please set the following: | 
|  | * | 
|  | * Local Variables: | 
|  | * indent-tabs-mode: nil | 
|  | * End: | 
|  | * | 
|  | */ |