diff options
Diffstat (limited to 'Build/source/libs/icu/icu-4.6/tools/genrb/reslist.h')
-rw-r--r-- | Build/source/libs/icu/icu-4.6/tools/genrb/reslist.h | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.6/tools/genrb/reslist.h b/Build/source/libs/icu/icu-4.6/tools/genrb/reslist.h new file mode 100644 index 00000000000..52737afd53d --- /dev/null +++ b/Build/source/libs/icu/icu-4.6/tools/genrb/reslist.h @@ -0,0 +1,202 @@ +/* +******************************************************************************* +* +* Copyright (C) 2000-2009, International Business Machines +* Corporation and others. All Rights Reserved. +* +******************************************************************************* +* +* File reslist.h +* +* Modification History: +* +* Date Name Description +* 02/21/00 weiv Creation. +******************************************************************************* +*/ + +#ifndef RESLIST_H +#define RESLIST_H + +#define KEY_SPACE_SIZE 65536 +#define RESLIST_MAX_INT_VECTOR 2048 + +#include "unicode/utypes.h" +#include "unicode/ures.h" +#include "unicode/ustring.h" +#include "uresdata.h" +#include "cmemory.h" +#include "cstring.h" +#include "unewdata.h" +#include "ustr.h" +#include "uhash.h" + +U_CDECL_BEGIN + +typedef struct KeyMapEntry { + int32_t oldpos, newpos; +} KeyMapEntry; + +/* Resource bundle root table */ +struct SRBRoot { + struct SResource *fRoot; + char *fLocale; + int32_t fIndexLength; + int32_t fMaxTableLength; + UBool noFallback; /* see URES_ATT_NO_FALLBACK */ + int8_t fStringsForm; /* default STRINGS_UTF16_V1 */ + UBool fIsPoolBundle; + + char *fKeys; + KeyMapEntry *fKeyMap; + int32_t fKeysBottom, fKeysTop; + int32_t fKeysCapacity; + int32_t fKeysCount; + int32_t fLocalKeyLimit; /* key offset < limit fits into URES_TABLE */ + + UHashtable *fStringSet; + uint16_t *f16BitUnits; + int32_t f16BitUnitsCapacity; + int32_t f16BitUnitsLength; + + const char *fPoolBundleKeys; + int32_t fPoolBundleKeysLength; + int32_t fPoolBundleKeysCount; + int32_t fPoolChecksum; +}; + +struct SRBRoot *bundle_open(const struct UString* comment, UBool isPoolBundle, UErrorCode *status); +void bundle_write(struct SRBRoot *bundle, const char *outputDir, const char *outputPkg, char *writtenFilename, int writtenFilenameLen, UErrorCode *status); + +/* write a java resource file */ +void bundle_write_java(struct SRBRoot *bundle, const char *outputDir, const char* outputEnc, char *writtenFilename, + int writtenFilenameLen, const char* packageName, const char* bundleName, UErrorCode *status); + +/* write a xml resource file */ +/* commented by Jing*/ +/* void bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outputEnc, + char *writtenFilename, int writtenFilenameLen,UErrorCode *status); */ + +/* added by Jing*/ +void bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outputEnc, const char* rbname, + char *writtenFilename, int writtenFilenameLen, const char* language, const char* package, UErrorCode *status); + +void bundle_close(struct SRBRoot *bundle, UErrorCode *status); +void bundle_setlocale(struct SRBRoot *bundle, UChar *locale, UErrorCode *status); +int32_t bundle_addtag(struct SRBRoot *bundle, const char *tag, UErrorCode *status); + +const char * +bundle_getKeyBytes(struct SRBRoot *bundle, int32_t *pLength); + +int32_t +bundle_addKeyBytes(struct SRBRoot *bundle, const char *keyBytes, int32_t length, UErrorCode *status); + +void +bundle_compactKeys(struct SRBRoot *bundle, UErrorCode *status); + +/* Various resource types */ + +/* + * Return a unique pointer to a dummy object, + * for use in non-error cases when no resource is to be added to the bundle. + * (NULL is used in error cases.) + */ +struct SResource* res_none(void); + +struct SResTable { + uint32_t fCount; + int8_t fType; /* determined by table_write16() for table_preWrite() & table_write() */ + struct SResource *fFirst; + struct SRBRoot *fRoot; +}; + +struct SResource* table_open(struct SRBRoot *bundle, const char *tag, const struct UString* comment, UErrorCode *status); +void table_add(struct SResource *table, struct SResource *res, int linenumber, UErrorCode *status); + +struct SResArray { + uint32_t fCount; + struct SResource *fFirst; + struct SResource *fLast; +}; + +struct SResource* array_open(struct SRBRoot *bundle, const char *tag, const struct UString* comment, UErrorCode *status); +void array_add(struct SResource *array, struct SResource *res, UErrorCode *status); + +struct SResString { + struct SResource *fSame; /* used for duplicates */ + UChar *fChars; + int32_t fLength; + int32_t fSuffixOffset; /* this string is a suffix of fSame at this offset */ + int8_t fNumCharsForLength; +}; + +struct SResource *string_open(struct SRBRoot *bundle, char *tag, const UChar *value, int32_t len, const struct UString* comment, UErrorCode *status); + +/** + * Remove a string from a bundle and close (delete) it. + * The string must not have been added to a table or array yet. + * This function only undoes what string_open() did. + */ +void bundle_closeString(struct SRBRoot *bundle, struct SResource *string); + +struct SResource *alias_open(struct SRBRoot *bundle, char *tag, UChar *value, int32_t len, const struct UString* comment, UErrorCode *status); + +struct SResIntVector { + uint32_t fCount; + uint32_t *fArray; +}; + +struct SResource* intvector_open(struct SRBRoot *bundle, char *tag, const struct UString* comment, UErrorCode *status); +void intvector_add(struct SResource *intvector, int32_t value, UErrorCode *status); + +struct SResInt { + uint32_t fValue; +}; + +struct SResource *int_open(struct SRBRoot *bundle, char *tag, int32_t value, const struct UString* comment, UErrorCode *status); + +struct SResBinary { + uint32_t fLength; + uint8_t *fData; + char* fFileName; /* file name for binary or import binary tags if any */ +}; + +struct SResource *bin_open(struct SRBRoot *bundle, const char *tag, uint32_t length, uint8_t *data, const char* fileName, const struct UString* comment, UErrorCode *status); + +/* Resource place holder */ + +struct SResource { + int8_t fType; /* nominal type: fRes (when != 0xffffffff) may use subtype */ + UBool fWritten; /* res_write() can exit early */ + uint32_t fRes; /* resource item word; 0xffffffff if not known yet */ + int32_t fKey; /* Index into bundle->fKeys; -1 if no key. */ + int line; /* used internally to report duplicate keys in tables */ + struct SResource *fNext; /*This is for internal chaining while building*/ + struct UString fComment; + union { + struct SResTable fTable; + struct SResArray fArray; + struct SResString fString; + struct SResIntVector fIntVector; + struct SResInt fIntValue; + struct SResBinary fBinaryValue; + } u; +}; + +const char * +res_getKeyString(const struct SRBRoot *bundle, const struct SResource *res, char temp[8]); + +void res_close(struct SResource *res); + +void setIncludeCopyright(UBool val); +UBool getIncludeCopyright(void); + +void setFormatVersion(int32_t formatVersion); + +void setUsePoolBundle(UBool use); + +/* in wrtxml.cpp */ +uint32_t computeCRC(char *ptr, uint32_t len, uint32_t lastcrc); + +U_CDECL_END +#endif /* #ifndef RESLIST_H */ |