OLD | NEW |
(Empty) | |
| 1 /* |
| 2 ******************************************************************************* |
| 3 * |
| 4 * Copyright (C) 2000-2009, International Business Machines |
| 5 * Corporation and others. All Rights Reserved. |
| 6 * |
| 7 ******************************************************************************* |
| 8 * |
| 9 * File reslist.h |
| 10 * |
| 11 * Modification History: |
| 12 * |
| 13 * Date Name Description |
| 14 * 02/21/00 weiv Creation. |
| 15 ******************************************************************************* |
| 16 */ |
| 17 |
| 18 #ifndef RESLIST_H |
| 19 #define RESLIST_H |
| 20 |
| 21 #define KEY_SPACE_SIZE 65536 |
| 22 #define RESLIST_MAX_INT_VECTOR 2048 |
| 23 |
| 24 #include "unicode/utypes.h" |
| 25 #include "unicode/ures.h" |
| 26 #include "unicode/ustring.h" |
| 27 #include "uresdata.h" |
| 28 #include "cmemory.h" |
| 29 #include "cstring.h" |
| 30 #include "unewdata.h" |
| 31 #include "ustr.h" |
| 32 #include "uhash.h" |
| 33 |
| 34 U_CDECL_BEGIN |
| 35 |
| 36 typedef struct KeyMapEntry { |
| 37 int32_t oldpos, newpos; |
| 38 } KeyMapEntry; |
| 39 |
| 40 /* Resource bundle root table */ |
| 41 struct SRBRoot { |
| 42 struct SResource *fRoot; |
| 43 char *fLocale; |
| 44 int32_t fIndexLength; |
| 45 int32_t fMaxTableLength; |
| 46 UBool noFallback; /* see URES_ATT_NO_FALLBACK */ |
| 47 int8_t fStringsForm; /* default STRINGS_UTF16_V1 */ |
| 48 UBool fIsPoolBundle; |
| 49 |
| 50 char *fKeys; |
| 51 KeyMapEntry *fKeyMap; |
| 52 int32_t fKeysBottom, fKeysTop; |
| 53 int32_t fKeysCapacity; |
| 54 int32_t fKeysCount; |
| 55 int32_t fLocalKeyLimit; /* key offset < limit fits into URES_TABLE */ |
| 56 |
| 57 UHashtable *fStringSet; |
| 58 uint16_t *f16BitUnits; |
| 59 int32_t f16BitUnitsCapacity; |
| 60 int32_t f16BitUnitsLength; |
| 61 |
| 62 const char *fPoolBundleKeys; |
| 63 int32_t fPoolBundleKeysLength; |
| 64 int32_t fPoolBundleKeysCount; |
| 65 int32_t fPoolChecksum; |
| 66 }; |
| 67 |
| 68 struct SRBRoot *bundle_open(const struct UString* comment, UBool isPoolBundle, U
ErrorCode *status); |
| 69 void bundle_write(struct SRBRoot *bundle, const char *outputDir, const char *out
putPkg, char *writtenFilename, int writtenFilenameLen, UErrorCode *status); |
| 70 |
| 71 /* write a java resource file */ |
| 72 void bundle_write_java(struct SRBRoot *bundle, const char *outputDir, const char
* outputEnc, char *writtenFilename, |
| 73 int writtenFilenameLen, const char* packageName, const ch
ar* bundleName, UErrorCode *status); |
| 74 |
| 75 /* write a xml resource file */ |
| 76 /* commented by Jing*/ |
| 77 /* void bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const cha
r* outputEnc, |
| 78 char *writtenFilename, int writtenFilenameLen,UErrorCode *stat
us); */ |
| 79 |
| 80 /* added by Jing*/ |
| 81 void bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char*
outputEnc, const char* rbname, |
| 82 char *writtenFilename, int writtenFilenameLen, const char* lan
guage, const char* package, UErrorCode *status); |
| 83 |
| 84 void bundle_close(struct SRBRoot *bundle, UErrorCode *status); |
| 85 void bundle_setlocale(struct SRBRoot *bundle, UChar *locale, UErrorCode *status)
; |
| 86 int32_t bundle_addtag(struct SRBRoot *bundle, const char *tag, UErrorCode *statu
s); |
| 87 |
| 88 const char * |
| 89 bundle_getKeyBytes(struct SRBRoot *bundle, int32_t *pLength); |
| 90 |
| 91 int32_t |
| 92 bundle_addKeyBytes(struct SRBRoot *bundle, const char *keyBytes, int32_t length,
UErrorCode *status); |
| 93 |
| 94 void |
| 95 bundle_compactKeys(struct SRBRoot *bundle, UErrorCode *status); |
| 96 |
| 97 /* Various resource types */ |
| 98 |
| 99 /* |
| 100 * Return a unique pointer to a dummy object, |
| 101 * for use in non-error cases when no resource is to be added to the bundle. |
| 102 * (NULL is used in error cases.) |
| 103 */ |
| 104 struct SResource* res_none(void); |
| 105 |
| 106 struct SResTable { |
| 107 uint32_t fCount; |
| 108 int8_t fType; /* determined by table_write16() for table_preWrite() & table
_write() */ |
| 109 struct SResource *fFirst; |
| 110 struct SRBRoot *fRoot; |
| 111 }; |
| 112 |
| 113 struct SResource* table_open(struct SRBRoot *bundle, const char *tag, const stru
ct UString* comment, UErrorCode *status); |
| 114 void table_add(struct SResource *table, struct SResource *res, int linenumber, U
ErrorCode *status); |
| 115 |
| 116 struct SResArray { |
| 117 uint32_t fCount; |
| 118 struct SResource *fFirst; |
| 119 struct SResource *fLast; |
| 120 }; |
| 121 |
| 122 struct SResource* array_open(struct SRBRoot *bundle, const char *tag, const stru
ct UString* comment, UErrorCode *status); |
| 123 void array_add(struct SResource *array, struct SResource *res, UErrorCode *statu
s); |
| 124 |
| 125 struct SResString { |
| 126 struct SResource *fSame; /* used for duplicates */ |
| 127 UChar *fChars; |
| 128 int32_t fLength; |
| 129 int32_t fSuffixOffset; /* this string is a suffix of fSame at this offset *
/ |
| 130 int8_t fNumCharsForLength; |
| 131 }; |
| 132 |
| 133 struct SResource *string_open(struct SRBRoot *bundle, char *tag, const UChar *va
lue, int32_t len, const struct UString* comment, UErrorCode *status); |
| 134 |
| 135 /** |
| 136 * Remove a string from a bundle and close (delete) it. |
| 137 * The string must not have been added to a table or array yet. |
| 138 * This function only undoes what string_open() did. |
| 139 */ |
| 140 void bundle_closeString(struct SRBRoot *bundle, struct SResource *string); |
| 141 |
| 142 struct SResource *alias_open(struct SRBRoot *bundle, char *tag, UChar *value, in
t32_t len, const struct UString* comment, UErrorCode *status); |
| 143 |
| 144 struct SResIntVector { |
| 145 uint32_t fCount; |
| 146 uint32_t *fArray; |
| 147 }; |
| 148 |
| 149 struct SResource* intvector_open(struct SRBRoot *bundle, char *tag, const struc
t UString* comment, UErrorCode *status); |
| 150 void intvector_add(struct SResource *intvector, int32_t value, UErrorCode *statu
s); |
| 151 |
| 152 struct SResInt { |
| 153 uint32_t fValue; |
| 154 }; |
| 155 |
| 156 struct SResource *int_open(struct SRBRoot *bundle, char *tag, int32_t value, con
st struct UString* comment, UErrorCode *status); |
| 157 |
| 158 struct SResBinary { |
| 159 uint32_t fLength; |
| 160 uint8_t *fData; |
| 161 char* fFileName; /* file name for binary or import binary tags if any */ |
| 162 }; |
| 163 |
| 164 struct SResource *bin_open(struct SRBRoot *bundle, const char *tag, uint32_t len
gth, uint8_t *data, const char* fileName, const struct UString* comment, UErrorC
ode *status); |
| 165 |
| 166 /* Resource place holder */ |
| 167 |
| 168 struct SResource { |
| 169 int8_t fType; /* nominal type: fRes (when != 0xffffffff) may use subty
pe */ |
| 170 UBool fWritten; /* res_write() can exit early */ |
| 171 uint32_t fRes; /* resource item word; 0xffffffff if not known yet */ |
| 172 int32_t fKey; /* Index into bundle->fKeys; -1 if no key. */ |
| 173 int line; /* used internally to report duplicate keys in tables */ |
| 174 struct SResource *fNext; /*This is for internal chaining while building*/ |
| 175 struct UString fComment; |
| 176 union { |
| 177 struct SResTable fTable; |
| 178 struct SResArray fArray; |
| 179 struct SResString fString; |
| 180 struct SResIntVector fIntVector; |
| 181 struct SResInt fIntValue; |
| 182 struct SResBinary fBinaryValue; |
| 183 } u; |
| 184 }; |
| 185 |
| 186 const char * |
| 187 res_getKeyString(const struct SRBRoot *bundle, const struct SResource *res, char
temp[8]); |
| 188 |
| 189 void res_close(struct SResource *res); |
| 190 |
| 191 void setIncludeCopyright(UBool val); |
| 192 UBool getIncludeCopyright(void); |
| 193 |
| 194 void setFormatVersion(int32_t formatVersion); |
| 195 |
| 196 void setUsePoolBundle(UBool use); |
| 197 |
| 198 /* in wrtxml.cpp */ |
| 199 uint32_t computeCRC(char *ptr, uint32_t len, uint32_t lastcrc); |
| 200 |
| 201 U_CDECL_END |
| 202 #endif /* #ifndef RESLIST_H */ |
OLD | NEW |