// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* ******************************************************************************* * * Copyright (C) 1999-2010, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* * file name: unewdata.h * encoding: UTF-8 * tab size: 8 (not used) * indentation:4 * * created on: 1999oct25 * created by: Markus W. Scherer */ #ifndef __UNEWDATA_H__ #define __UNEWDATA_H__ #include "unicode/utypes.h" #include "unicode/udata.h" /* API for writing data -----------------------------------------------------*/ /** @memo Forward declaration of the data memory creation type. */ typedef struct UNewDataMemory UNewDataMemory; /** * Create a new binary data file. * The file-writing udata_ functions facilitate writing * binary data files that can be read by ICU's udata API. * This function opens a new file with a filename determined from its * parameters - of the form "name.type". * It then writes a short header, followed by the UDataInfo * structure and, optionally, by the comment string. * It then writes padding bytes to round up to a multiple of 16 bytes. * Subsequent write operations will thus start at an offset in the file * that is a multiple of 16. udata_getMemory() will return * a pointer to this same starting offset. * * See udata.h . * * @param dir A string that specifies the directory where the data will be * written. If NULL, then * u_getDataDirectory is used. * @param type A string that specifies the type of data to be written. * For example, resource bundles are written with type "res", * conversion tables with type "cnv". * This may be NULL or empty. * @param name A string that specifies the name of the data. * @param pInfo A pointer to a correctly filled UDataInfo * structure that will be copied into the file. * @param comment A string (e.g., a copyright statement) that will be * copied into the file if it is not NULL * or empty. This string serves only as a comment in the binary * file. It will not be accessible by any API. * @param pErrorCode An ICU UErrorCode parameter. It must not be NULL. */ U_CAPI UNewDataMemory * U_EXPORT2 udata_create(const char *dir, const char *type, const char *name, const UDataInfo *pInfo, const char *comment, UErrorCode *pErrorCode); /** @memo Close a newly written binary file. */ U_CAPI uint32_t U_EXPORT2 udata_finish(UNewDataMemory *pData, UErrorCode *pErrorCode); /** @memo Write a dummy data file. */ U_CAPI void U_EXPORT2 udata_createDummy(const char *dir, const char *type, const char *name, UErrorCode *pErrorCode); /** @memo Write an 8-bit byte to the file. */ U_CAPI void U_EXPORT2 udata_write8(UNewDataMemory *pData, uint8_t byte); /** @memo Write a 16-bit word to the file. */ U_CAPI void U_EXPORT2 udata_write16(UNewDataMemory *pData, uint16_t word); /** @memo Write a 32-bit word to the file. */ U_CAPI void U_EXPORT2 udata_write32(UNewDataMemory *pData, uint32_t wyde); /** @memo Write a block of bytes to the file. */ U_CAPI void U_EXPORT2 udata_writeBlock(UNewDataMemory *pData, const void *s, int32_t length); /** @memo Write a block of arbitrary padding bytes to the file. */ U_CAPI void U_EXPORT2 udata_writePadding(UNewDataMemory *pData, int32_t length); /** @memo Write a char* string of platform "invariant characters" to the file. */ U_CAPI void U_EXPORT2 udata_writeString(UNewDataMemory *pData, const char *s, int32_t length); /** @memo Write a UChar* string of Unicode character code units to the file. */ U_CAPI void U_EXPORT2 udata_writeUString(UNewDataMemory *pData, const UChar *s, int32_t length); /* * Hey, Emacs, please set the following: * * Local Variables: * indent-tabs-mode: nil * End: * */ #endif