/*
*******************************************************************************
*
* 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