]>
Commit | Line | Data |
---|---|---|
b75a7d8f A |
1 | /* |
2 | ******************************************************************************* | |
3 | * | |
4 | * Copyright (C) 1999-2000, International Business Machines | |
5 | * Corporation and others. All Rights Reserved. | |
6 | * | |
7 | ******************************************************************************* | |
8 | * file name: unewdata.h | |
9 | * encoding: US-ASCII | |
10 | * tab size: 8 (not used) | |
11 | * indentation:4 | |
12 | * | |
13 | * created on: 1999oct25 | |
14 | * created by: Markus W. Scherer | |
15 | */ | |
16 | ||
17 | #ifndef __UNEWDATA_H__ | |
18 | #define __UNEWDATA_H__ | |
19 | ||
20 | #include "unicode/utypes.h" | |
21 | #include "unicode/udata.h" | |
22 | ||
23 | /* API for writing data -----------------------------------------------------*/ | |
24 | ||
25 | /** @memo Forward declaration of the data memory creation type. */ | |
26 | typedef struct UNewDataMemory UNewDataMemory; | |
27 | ||
28 | /** | |
29 | * Create a new binary data file. | |
30 | * The file-writing <code>udata_</code> functions facilitate writing | |
31 | * binary data files that can be read by ICU's <code>udata</code> API. | |
32 | * This function opens a new file with a filename determined from its | |
33 | * parameters - of the form "name.type". | |
34 | * It then writes a short header, followed by the <code>UDataInfo</code> | |
35 | * structure and, optionally, by the comment string. | |
36 | * It then writes padding bytes to round up to a multiple of 16 bytes. | |
37 | * Subsequent write operations will thus start at an offset in the file | |
38 | * that is a multiple of 16. <code>udata_getMemory()</code> will return | |
39 | * a pointer to this same starting offset. | |
40 | * | |
41 | * See udata.h . | |
42 | * | |
43 | * @param dir A string that specifies the directory where the data will be | |
44 | * written. If <code>NULL</code>, then | |
45 | * <code>u_getDataDirectory</code> is used. | |
46 | * @param type A string that specifies the type of data to be written. | |
47 | * For example, resource bundles are written with type "res", | |
48 | * conversion tables with type "cnv". | |
49 | * This may be <code>NULL</code> or empty. | |
50 | * @param name A string that specifies the name of the data. | |
51 | * @param pInfo A pointer to a correctly filled <code>UDataInfo</code> | |
52 | * structure that will be copied into the file. | |
53 | * @param comment A string (e.g., a copyright statement) that will be | |
54 | * copied into the file if it is not <code>NULL</code> | |
55 | * or empty. This string serves only as a comment in the binary | |
56 | * file. It will not be accessible by any API. | |
57 | * @param pErrorCode An ICU UErrorCode parameter. It must not be <code>NULL</code>. | |
58 | */ | |
59 | U_CAPI UNewDataMemory * U_EXPORT2 | |
60 | udata_create(const char *dir, const char *type, const char *name, | |
61 | const UDataInfo *pInfo, | |
62 | const char *comment, | |
63 | UErrorCode *pErrorCode); | |
64 | ||
65 | /** @memo Close a newly written binary file. */ | |
66 | U_CAPI uint32_t U_EXPORT2 | |
67 | udata_finish(UNewDataMemory *pData, UErrorCode *pErrorCode); | |
68 | ||
69 | /** @memo Write an 8-bit byte to the file. */ | |
70 | U_CAPI void U_EXPORT2 | |
71 | udata_write8(UNewDataMemory *pData, uint8_t byte); | |
72 | ||
73 | /** @memo Write a 16-bit word to the file. */ | |
74 | U_CAPI void U_EXPORT2 | |
75 | udata_write16(UNewDataMemory *pData, uint16_t word); | |
76 | ||
77 | /** @memo Write a 32-bit word to the file. */ | |
78 | U_CAPI void U_EXPORT2 | |
79 | udata_write32(UNewDataMemory *pData, uint32_t wyde); | |
80 | ||
81 | /** @memo Write a block of bytes to the file. */ | |
82 | U_CAPI void U_EXPORT2 | |
83 | udata_writeBlock(UNewDataMemory *pData, const void *s, int32_t length); | |
84 | ||
85 | /** @memo Write a block of arbitrary padding bytes to the file. */ | |
86 | U_CAPI void U_EXPORT2 | |
87 | udata_writePadding(UNewDataMemory *pData, int32_t length); | |
88 | ||
89 | /** @memo Write a <code>char*</code> string of platform "invariant characters" to the file. */ | |
90 | U_CAPI void U_EXPORT2 | |
91 | udata_writeString(UNewDataMemory *pData, const char *s, int32_t length); | |
92 | ||
93 | /** @memo Write a <code>UChar*</code> string of Unicode character code units to the file. */ | |
94 | U_CAPI void U_EXPORT2 | |
95 | udata_writeUString(UNewDataMemory *pData, const UChar *s, int32_t length); | |
96 | ||
97 | ||
98 | /* | |
99 | * Hey, Emacs, please set the following: | |
100 | * | |
101 | * Local Variables: | |
102 | * indent-tabs-mode: nil | |
103 | * End: | |
104 | * | |
105 | */ | |
106 | ||
107 | #endif |