/* ******************************************************************************* * * 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(startpostContext,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: * */