/* ******************************************************************************* * * Copyright (C) 1999-2005, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* * file name: gennorm.h * encoding: US-ASCII * tab size: 8 (not used) * indentation:4 * * created on: 2001may25 * created by: Markus W. Scherer */ #ifndef __GENPROPS_H__ #define __GENPROPS_H__ #include "unicode/utypes.h" #include "unicode/uset.h" /* file definitions */ #define DATA_NAME "unorm" #define DATA_TYPE "icu" /* * data structure that holds the normalization properties for one or more * code point(s) at build time */ typedef struct Norm { uint8_t udataCC, lenNFD, lenNFKD; uint8_t qcFlags, combiningFlags; uint16_t canonBothCCs, compatBothCCs, combiningIndex, specialTag; uint32_t *nfd, *nfkd; uint32_t value32; /* temporary variable for generating runtime norm32 and fcd values */ int32_t fncIndex; USet *canonStart; UBool unsafeStart; } Norm; /* * modularization flags * * Corresponding bits in gStoreFlags control whether certain kinds of data * are to be stored in (1) or omitted from (0) the data file. * The flags are controlled by a command-line argument, with a letter * per flag. */ enum { UGENNORM_STORE_COMPAT, /* (k) compatibility decompositions */ UGENNORM_STORE_COMPOSITION, /* (c) composition data */ UGENNORM_STORE_FCD, /* (f) FCD data */ UGENNORM_STORE_AUX, /* (a) auxiliary trie and associated data */ UGENNORM_STORE_EXCLUSIONS, /* (x) exclusion sets */ UGENNORM_STORE_COUNT }; extern uint32_t gStoreFlags; #define DO_STORE(flag) (0!=(gStoreFlags&U_MASK(flag))) #define DO_NOT_STORE(flag) (0==(gStoreFlags&U_MASK(flag))) /* global flags */ extern UBool beVerbose, haveCopyright; /* prototypes */ extern void setUnicodeVersion(const char *v); extern void init(void); extern void storeNorm(uint32_t code, Norm *norm); extern void setQCFlags(uint32_t code, uint8_t qcFlags); extern void setCompositionExclusion(uint32_t code); U_CFUNC void setFNC(uint32_t c, UChar *s); extern void processData(void); extern void generateData(const char *dataDir, UBool csource); extern void cleanUpData(void); #endif