~alinuxninja/nginx-edge/trunk

« back to all changes in this revision

Viewing changes to debian/modules/ngx_pagespeed/psol/include/third_party/icu/source/common/ucmndata.h

  • Committer: Vivian
  • Date: 2015-12-04 18:20:11 UTC
  • Revision ID: git-v1:a36f2bc32e884f7473b3a47040e5411306144d7d
* Do not extract psol.tar.gz

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
******************************************************************************
3
 
*
4
 
*   Copyright (C) 1999-2010, International Business Machines
5
 
*   Corporation and others.  All Rights Reserved.
6
 
*
7
 
******************************************************************************/
8
 
 
9
 
 
10
 
/*----------------------------------------------------------------------------------
11
 
 *
12
 
 *   UCommonData   An abstract interface for dealing with ICU Common Data Files.
13
 
 *                 ICU Common Data Files are a grouping of a number of individual
14
 
 *                 data items (resources, converters, tables, anything) into a
15
 
 *                 single file or dll.  The combined format includes a table of
16
 
 *                 contents for locating the individual items by name.
17
 
 *
18
 
 *                 Two formats for the table of contents are supported, which is
19
 
 *                 why there is an abstract inteface involved.
20
 
 *
21
 
 *                 These functions are part of the ICU internal implementation, and
22
 
 *                 are not inteded to be used directly by applications.
23
 
 */
24
 
 
25
 
#ifndef __UCMNDATA_H__
26
 
#define __UCMNDATA_H__
27
 
 
28
 
#include "unicode/udata.h"
29
 
#include "umapfile.h"
30
 
 
31
 
 
32
 
#define COMMON_DATA_NAME U_ICUDATA_NAME
33
 
 
34
 
typedef struct  {
35
 
    uint16_t    headerSize;
36
 
    uint8_t     magic1;
37
 
    uint8_t     magic2;
38
 
} MappedData;
39
 
 
40
 
 
41
 
typedef struct  {
42
 
    MappedData  dataHeader;
43
 
    UDataInfo   info;
44
 
} DataHeader;
45
 
 
46
 
typedef struct {
47
 
    uint32_t nameOffset;
48
 
    uint32_t dataOffset;
49
 
} UDataOffsetTOCEntry;
50
 
 
51
 
typedef struct {
52
 
    uint32_t count;
53
 
    UDataOffsetTOCEntry entry[2];    /* Actual size of array is from count. */
54
 
} UDataOffsetTOC;
55
 
 
56
 
/**
57
 
 * Get the header size from a const DataHeader *udh.
58
 
 * Handles opposite-endian data.
59
 
 *
60
 
 * @internal
61
 
 */
62
 
U_CFUNC uint16_t
63
 
udata_getHeaderSize(const DataHeader *udh);
64
 
 
65
 
/**
66
 
 * Get the UDataInfo.size from a const UDataInfo *info.
67
 
 * Handles opposite-endian data.
68
 
 *
69
 
 * @internal
70
 
 */
71
 
U_CFUNC uint16_t
72
 
udata_getInfoSize(const UDataInfo *info);
73
 
 
74
 
/*
75
 
 *  "Virtual" functions for data lookup.
76
 
 *  To call one, given a UDataMemory *p, the code looks like this:
77
 
 *     p->vFuncs.Lookup(p, tocEntryName, pErrorCode);
78
 
 *          (I sure do wish this was written in C++, not C)
79
 
 */
80
 
 
81
 
typedef const DataHeader *
82
 
(* LookupFn)(const UDataMemory *pData,
83
 
             const char *tocEntryName,
84
 
             int32_t *pLength,
85
 
             UErrorCode *pErrorCode);
86
 
 
87
 
typedef uint32_t
88
 
(* NumEntriesFn)(const UDataMemory *pData);
89
 
 
90
 
typedef struct {
91
 
    LookupFn      Lookup;
92
 
    NumEntriesFn  NumEntries; 
93
 
} commonDataFuncs;
94
 
 
95
 
 
96
 
/*
97
 
 *  Functions to check whether a UDataMemory refers to memory containing 
98
 
 *     a recognizable header and table of contents a Common Data Format
99
 
 *
100
 
 *     If a valid header and TOC are found,
101
 
 *         set the CommonDataFuncs function dispatch vector in the UDataMemory
102
 
 *             to point to the right functions for the TOC type.
103
 
 *     otherwise
104
 
 *         set an errorcode.
105
 
 */
106
 
U_CFUNC void udata_checkCommonData(UDataMemory *pData, UErrorCode *pErrorCode);
107
 
 
108
 
#endif