18d6c753f5
X-SVN-Rev: 12173
111 lines
3.1 KiB
C
111 lines
3.1 KiB
C
/*
|
|
*******************************************************************************
|
|
*
|
|
* 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;
|
|
|
|
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:
|
|
*
|
|
*/
|