1 #ifndef NF16CHECK_H 2 #define NF16CHECK_H 3 4 /* Copyright 2003 Martin J. Du"rst, W3C; for details, see 5 * http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 6 */ 7 8 /* Normalization checking for UTF-16 */ 9 /* Supports full normalization according to W3C Character Model */ 10 11 12 #ifndef CHARSET_H 13 /* If we're being included in an RXP .c file, this will already 14 have been typedef'd in charset.h. */ 15 typedef unsigned short char16; 16 #endif 17 18 typedef enum nf16start { 19 NF16Start, /* check including start condition */ 20 NF16noStart, /* don't check start condition */ 21 NF16continue, /* continue checking */ 22 NF16error /* error, wait for next start */ 23 } nf16start; 24 25 typedef struct nf16checker { 26 unsigned int starter; /* starter of a run that may be combined */ 27 int starterflag; /* declared as int to not expose NF16data.h */ 28 nf16start startP; /* start/continue/error condition */ 29 int lastclass; /* combining class */ 30 unsigned int high; /* high surrogate not yet analyzed */ 31 int exists; /* 1: check that character exists; 0: don't check */ 32 } *NF16Checker; 33 34 35 typedef enum nf16result { 36 NF16wrong, 37 NF16okay 38 } nf16res; 39 40 /* create one per thread/entity/whatever */ 41 NF16Checker nf16checkNew (int exists); 42 43 void nf16checkDelete (NF16Checker checker); 44 45 /* set start state */ 46 void nf16checkStart (NF16Checker checker); 47 void nf16checkNoStart (NF16Checker checker); 48 49 /* change checking of existing characters */ 50 void nf16checkExists (NF16Checker checker, int exists); 51 52 /* general check function, s is null-delimited */ 53 nf16res nf16check (NF16Checker checker, char16* s); 54 55 /* variant of nf16check, s_length gives length of s */ 56 nf16res nf16checkL (NF16Checker checker, char16* s, int s_length); 57 58 #endif /* NF16CHECK_H */ 59