ICU 74.2: UDataInfo Struct Reference

ICU 74.2 74.2

Data Fields
UDataInfo Struct Reference

UDataInfo contains the properties about the requested data. More...

`#include <udata.h>`

## Data Fields
uint16_t | size
| sizeof(UDataInfo)
uint16_t | reservedWord
| unused, set to 0
uint8_t | isBigEndian
| 0 for little-endian machine, 1 for big-endian
uint8_t | charsetFamily
| see U_CHARSET_FAMILY values in utypes.h
uint8_t | sizeofUChar
| sizeof(UChar), one of { 1, 2, 4 }
uint8_t | reservedByte
| unused, set to 0
uint8_t | dataFormat [4]
| data format identifier
uint8_t | formatVersion [4]
| versions: [0] major [1] minor [2] milli [3] micro
uint8_t | dataVersion [4]
| versions: [0] major [1] minor [2] milli [3] micro

## Detailed Description

UDataInfo contains the properties about the requested data.

This is meta data.

This structure may grow in the future, indicated by the `size` field.

ICU data must be at least 8-aligned, and should be 16-aligned. The UDataInfo struct begins 4 bytes after the start of the data item, so it is 4-aligned.

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. It 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.

Stable:
  ICU 2.0

Definition at line 116 of file udata.h.

## Field Documentation

## ◆ charsetFamily

uint8_t UDataInfo::charsetFamily

see U_CHARSET_FAMILY values in utypes.h

Stable:
  ICU 2.0

Definition at line 132 of file udata.h.

## ◆ dataFormat

uint8_t UDataInfo::dataFormat[4]

data format identifier

Stable:
  ICU 2.0

Definition at line 144 of file udata.h.

## ◆ dataVersion

uint8_t UDataInfo::dataVersion[4]

versions: [0] major [1] minor [2] milli [3] micro

Stable:
  ICU 2.0

Definition at line 152 of file udata.h.

## ◆ formatVersion

uint8_t UDataInfo::formatVersion[4]

versions: [0] major [1] minor [2] milli [3] micro

Stable:
  ICU 2.0

Definition at line 148 of file udata.h.

## ◆ isBigEndian

uint8_t UDataInfo::isBigEndian

0 for little-endian machine, 1 for big-endian

Stable:
  ICU 2.0

Definition at line 128 of file udata.h.

## ◆ reservedByte

uint8_t UDataInfo::reservedByte

unused, set to 0

Stable:
  ICU 2.0

Definition at line 140 of file udata.h.

## ◆ reservedWord

uint16_t UDataInfo::reservedWord

unused, set to 0

Stable:
  ICU 2.0

Definition at line 123 of file udata.h.

## ◆ size

uint16_t UDataInfo::size

sizeof(UDataInfo)

Stable:
  ICU 2.0

Definition at line 119 of file udata.h.

## ◆ sizeofUChar

uint8_t UDataInfo::sizeofUChar

sizeof(UChar), one of { 1, 2, 4 }

Stable:
  ICU 2.0

Definition at line 136 of file udata.h.

The documentation for this struct was generated from the following file:

- common/unicode/udata.h