#include "unicode/utypes.h"
Go to the source code of this file.
Compounds | |
struct | UDataInfo |
Typedefs | |
typedef struct UDataMemory | UDataMemory |
Forward declaration of the data memory type. More... | |
typedef UBool | UDataMemoryIsAcceptable (void *context, const char *type, const char *name, const UDataInfo *pInfo) |
Callback function for udata_openChoice(). More... | |
Functions | |
U_CAPI UDataMemory* U_EXPORT2 | udata_open (const char *path, const char *type, const char *name, UErrorCode *pErrorCode) |
Convenience function. More... | |
U_CAPI UDataMemory* U_EXPORT2 | udata_openChoice (const char *path, const char *type, const char *name, UDataMemoryIsAcceptable *isAcceptable, void *context, UErrorCode *pErrorCode) |
Data loading function. More... | |
U_CAPI void U_EXPORT2 | udata_close (UDataMemory *pData) |
Close the data memory. More... | |
U_CAPI const void* U_EXPORT2 | udata_getMemory (UDataMemory *pData) |
Get the pointer to the actual data inside the data memory. More... | |
U_CAPI void U_EXPORT2 | udata_getInfo (UDataMemory *pData, UDataInfo *pInfo) |
Get the information from the data memory header. More... | |
U_CAPI void U_EXPORT2 | udata_setCommonData (const void *data, UErrorCode *err) |
This function bypasses the normal ICU data loading process and allows you to force the data to come out of a user-specified pointer. More... |
size
field.
The platform data property fields help determine if a data file can be efficiently used on a given machine. The particular fields are of importance only if the data is affected by the properties - if there is integer data with word sizes > 1 byte, char* text, or UChar* text.
The implementation for the udata_open[Choice]()
functions may reject data based on the value in isBigEndian
. No other field is used by the udata
API implementation.
The dataFormat
may be used to identify the kind of data, e.g. a converter table.
The formatVersion
field should be used to make sure that the format can be interpreted. I may be a good idea to check only for the one or two highest of the version elements to allow the data memory to get more or somewhat rearranged contents, for as long as the using code can still interpret the older contents.
The dataVersion
field is intended to be a common place to store the source version of the data; for data from the Unicode character database, this could reflect the Unicode version.
Definition in file udata.h.
|
Forward declaration of the data memory type.
|
|
Callback function for udata_openChoice().
|
|
Close the data memory. This function must be called to allow the system to release resources associated with this data memory.
|
|
Get the information from the data memory header.
This allows to get access to the header containing platform data properties etc. which is not part of the data itself and can therefore not be accessed via the pointer that
*pInfo will be filled with the UDataInfo structure in the data memory object. If this structure is smaller than pInfo->size , then the size will be adjusted and only part of the structure will be filled.
|
|
Get the pointer to the actual data inside the data memory. The data is read-only.
|
|
Convenience function.
This function works the same as
|
|
Data loading function. This function is used to find and load efficiently data for ICU and applications using ICU. It provides an abstract interface that allows to specify a data type and name to find and load the data.
The implementation depends on platform properties and user preferences and may involve loading shared libraries (DLLs), mapping files into memory, or fopen()/fread() files. It may also involve using static memory or database queries etc. Several or all data items may be combined into one entity (DLL, memory-mappable file).
The data is always preceded by a header that includes a
If
|
|
This function bypasses the normal ICU data loading process and allows you to force the data to come out of a user-specified pointer. The format of this data is that of the icu common data file, 'icudata.dat' or that of a DLL (shared library) with a table of contents as generated by "gencmn -s". You can read in that whole file and pass the address to the start of the data, or (with the appropriate link options) pass in the pointer to a 'genccode'-generated library, or pass the pointer to the entry point of the table of contents file that gencmn -s generated, as follows: extern const uint8_t U_IMPORT icudata_dat[]; UErrorCode status = U_ZERO_ERROR; udata_setCommonData((const void*)icudata_dat, &status); ( link with icudata.dll / libicudata.so/a/sl .. see the release notes for how to build the 'common mapped dll'. ) This function will automatically skip over the 'double' padding present in genccode symbols, if present. Warning: ICU must NOT have even attempted to load its data yet when this call is made, or U_USING_DEFAULT_ERROR [non-failing] will be returned. Be careful of UnicodeStrings in static initialization which may attempt to load a converter (use the UNICODE_STRING(x) macro instead). This function has no effect on application (non ICU) data, and will return U_UNSUPPORTED_ERROR if mapped data support is not available on the currently compiled ICU.
|