// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright ( C ) 1999 - 2011 , International Business Machines
* Corporation and others . All Rights Reserved .
*
******************************************************************************/
/*----------------------------------------------------------------------------------
*
* UCommonData An abstract interface for dealing with ICU Common Data Files .
* ICU Common Data Files are a grouping of a number of individual
* data items ( resources , converters , tables , anything ) into a
* single file or dll . The combined format includes a table of
* contents for locating the individual items by name .
*
* Two formats for the table of contents are supported , which is
* why there is an abstract interface involved .
*
* These functions are part of the ICU internal implementation , and
* are not intended to be used directly by applications .
*/
#ifndef __UCMNDATA_H__
#define __UCMNDATA_H__
#include "unicode/udata.h"
#include "umapfile.h"
#define COMMON_DATA_NAME U_ICUDATA_NAME
typedef struct {
uint16_t headerSize;
uint8_t magic1;
uint8_t magic2;
} MappedData;
typedef struct {
MappedData dataHeader;
UDataInfo info;
} DataHeader;
typedef struct {
uint32_t nameOffset;
uint32_t dataOffset;
} UDataOffsetTOCEntry;
typedef struct {
uint32_t count;
/**
* Variable - length array declared with length 1 to disable bounds checkers .
* The actual array length is in the count field .
*/
UDataOffsetTOCEntry entry[
1 ];
} UDataOffsetTOC;
/**
* Get the header size from a const DataHeader * udh .
* Handles opposite - endian data .
*
* @ internal
*/
U_CFUNC uint16_t
udata_getHeaderSize(
const DataHeader *udh);
/**
* Get the UDataInfo . size from a const UDataInfo * info .
* Handles opposite - endian data .
*
* @ internal
*/
U_CFUNC uint16_t
udata_getInfoSize(
const UDataInfo *info);
U_CDECL_BEGIN
/*
* " Virtual " functions for data lookup .
* To call one , given a UDataMemory * p , the code looks like this :
* p - > vFuncs . Lookup ( p , tocEntryName , pErrorCode ) ;
* ( I sure do wish this was written in C + + , not C )
*/
typedef const DataHeader *
(U_CALLCONV * LookupFn)(
const UDataMemory *pData,
const char *tocEntryName,
int32_t *pLength,
UErrorCode *pErrorCode);
typedef uint32_t
(U_CALLCONV * NumEntriesFn)(
const UDataMemory *pData);
U_CDECL_END
typedef struct {
LookupFn Lookup;
NumEntriesFn NumEntries;
} commonDataFuncs;
/*
* Functions to check whether a UDataMemory refers to memory containing
* a recognizable header and table of contents a Common Data Format
*
* If a valid header and TOC are found ,
* set the CommonDataFuncs function dispatch vector in the UDataMemory
* to point to the right functions for the TOC type .
* otherwise
* set an errorcode .
*/
U_CFUNC
void udata_checkCommonData(UDataMemory *pData, UErrorCode *pErrorCode);
#endif
Messung V0.5 in Prozent C=98 H=99 G=98
¤ Dauer der Verarbeitung: 0.6 Sekunden
¤
*© Formatika GbR, Deutschland