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