| #ifndef URESIMP_H |
| #define URESIMP_H |
| |
| #include "unicode/ures.h" |
| |
| #include "unicode/uloc.h" |
| #include "unicode/ustring.h" |
| #include "cmemory.h" |
| #include "cstring.h" |
| #include "uresdata.h" |
| #include "uhash.h" |
| #include "umutex.h" |
| |
| #define kRootLocaleName "root" |
| #define kIndexLocaleName "index" |
| #define kIndexTag "InstalledLocales" |
| |
| /* |
| The default minor version and the version separator must be exactly one |
| character long. |
| */ |
| |
| #define kDefaultMinorVersion "0" |
| #define kVersionSeparator "." |
| #define kVersionTag "Version" |
| |
| #define MAGIC1 19700503 |
| #define MAGIC2 19641227 |
| |
| |
| enum UResEntryType { |
| ENTRY_OK = 0, |
| ENTRY_GOTO_ROOT = 1, |
| ENTRY_GOTO_DEFAULT = 2, |
| ENTRY_INVALID = 3 |
| }; |
| |
| typedef enum UResEntryType UResEntryType; |
| |
| struct UResourceDataEntry; |
| typedef struct UResourceDataEntry UResourceDataEntry; |
| |
| struct UResourceDataEntry { |
| char *fName; /* name of the locale for bundle - still to decide whether it is original or fallback */ |
| char *fPath; /* path to bundle - used for distinguishing between resources with the same name */ |
| uint32_t fCountExisting; /* how much is this resource used */ |
| ResourceData fData; /* data for low level access */ |
| UResourceDataEntry *fParent; /*next resource in fallback chain*/ |
| UResEntryType fStatus; |
| UErrorCode fBogus; |
| int32_t fHashKey; /* for faster access in the hashtable */ |
| }; |
| |
| struct UResourceBundle { |
| const char *fKey; /*tag*/ |
| char *fVersion; |
| UBool fHasFallback; |
| UBool fIsTopLevel; |
| uint32_t fMagic1; |
| uint32_t fMagic2; |
| /*UBool fIsStackObject;*/ |
| UResourceDataEntry *fData; /*for low-level access*/ |
| int32_t fIndex; |
| int32_t fSize; |
| ResourceData fResData; |
| Resource fRes; |
| }; |
| |
| U_CFUNC UResourceBundle* ures_openNoFallback(const char* path, const char* localeID, UErrorCode* status); |
| U_CFUNC const char* ures_getRealLocale(const UResourceBundle* resourceBundle, UErrorCode* status); |
| U_CAPI void ures_setIsStackObject( UResourceBundle* resB, UBool state); |
| U_CAPI UBool ures_isStackObject( UResourceBundle* resB, UErrorCode *status); |
| |
| U_CFUNC const ResourceData *getFallbackData(const UResourceBundle* resBundle, const char* * resTag, UResourceDataEntry* *realData, Resource *res, UErrorCode *status); |
| U_CFUNC int32_t hashBundle(const void *parm); |
| U_CFUNC UBool compareBundles(const void *p1, const void *p2); |
| |
| /* Candidates for export */ |
| U_CFUNC UResourceBundle *copyResb(UResourceBundle *r, const UResourceBundle *original, UErrorCode *status); |
| U_CFUNC const ResourceData * ures_getResData(const UResourceBundle* resB); |
| #endif /*URESIMP_H*/ |