1// © 2017 and later: Unicode, Inc. and others. 2// License & terms of use: http://www.unicode.org/copyright.html 3/* 4******************************************************************************* 5* 6* Copyright (C) 1999-2012, International Business Machines 7* Corporation and others. All Rights Reserved. 8* 9******************************************************************************* 10* file name: genprops.h 11* encoding: US-ASCII 12* tab size: 8 (not used) 13* indentation:4 14* 15* created on: 1999dec13 16* created by: Markus W. Scherer 17*/ 18 19#ifndef __GENPROPS_H__ 20#define __GENPROPS_H__ 21 22#include <stdio.h> 23#include "unicode/utypes.h" 24#include "unicode/uniset.h" 25#include "ppucd.h" 26#include "unewdata.h" 27 28#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) 29 30class PropsBuilder { 31public: 32 PropsBuilder(); 33 virtual ~PropsBuilder(); 34 virtual void setUnicodeVersion(const UVersionInfo version); 35 virtual void setAlgNamesRange(UChar32 start, UChar32 end, 36 const char *type, const char *prefix, UErrorCode &errorCode); 37 virtual void setProps(const icu::UniProps &props, const icu::UnicodeSet &newValues, UErrorCode &errorCode); 38 virtual void parseUnidataFiles(const char *unidataPath, UErrorCode &errorCode); 39 virtual void build(UErrorCode &errorCode); 40 virtual void writeCSourceFile(const char *path, UErrorCode &errorCode); 41 virtual void writeJavaSourceFile(const char *path, UErrorCode &errorCode); 42 virtual void writeBinaryData(const char *path, UBool withCopyright, UErrorCode &errorCode); 43}; 44 45class PNamesBuilder : public PropsBuilder { 46public: 47 virtual const icu::PropertyNames *getPropertyNames() = 0; 48}; 49 50PNamesBuilder *createPNamesBuilder(UErrorCode &errorCode); 51PropsBuilder *createCorePropsBuilder(UErrorCode &errorCode); 52PropsBuilder *createBiDiPropsBuilder(UErrorCode &errorCode); 53PropsBuilder *createCasePropsBuilder(UErrorCode &errorCode); 54PropsBuilder *createLayoutPropsBuilder(UErrorCode &errorCode); 55PropsBuilder *createEmojiPropsBuilder(UErrorCode &errorCode); 56PropsBuilder *createNamesPropsBuilder(UErrorCode &errorCode); 57 58/* global flags */ 59extern UBool beVerbose; 60extern UBool beQuiet; 61 62#endif 63