1/* 2******************************************************************************* 3* 4* Copyright (C) 2005-2012, International Business Machines 5* Corporation and others. All Rights Reserved. 6* 7******************************************************************************* 8* file name: writesrc.h 9* encoding: US-ASCII 10* tab size: 8 (not used) 11* indentation:4 12* 13* created on: 2005apr23 14* created by: Markus W. Scherer 15* 16* Helper functions for writing source code for data. 17*/ 18 19#ifndef __WRITESRC_H__ 20#define __WRITESRC_H__ 21 22#include <stdio.h> 23#include "unicode/utypes.h" 24#include "utrie2.h" 25 26/** 27 * Creates a source text file and writes a header comment with the ICU copyright. 28 * Writes a C/Java-style comment with the generator name. 29 */ 30U_CAPI FILE * U_EXPORT2 31usrc_create(const char *path, const char *filename, const char *generator); 32 33/** 34 * Creates a source text file and writes a header comment with the ICU copyright. 35 * Writes the comment with # lines, as used in scripts and text data. 36 */ 37U_CAPI FILE * U_EXPORT2 38usrc_createTextData(const char *path, const char *filename, const char *generator); 39 40/** 41 * Writes the contents of an array of 8/16/32-bit words. 42 * The prefix and postfix are optional (can be NULL) and are written first/last. 43 * The prefix may contain a %ld or similar field for the array length. 44 * The {} and declaration etc. need to be included in prefix/postfix or 45 * printed before and after the array contents. 46 */ 47U_CAPI void U_EXPORT2 48usrc_writeArray(FILE *f, 49 const char *prefix, 50 const void *p, int32_t width, int32_t length, 51 const char *postfix); 52 53/** 54 * Calls usrc_writeArray() for the index and data arrays of a frozen UTrie2. 55 * Only the index array is written for a 16-bit UTrie2. In this case, dataPrefix 56 * is ignored and can be NULL. 57 */ 58U_CAPI void U_EXPORT2 59usrc_writeUTrie2Arrays(FILE *f, 60 const char *indexPrefix, const char *dataPrefix, 61 const UTrie2 *pTrie, 62 const char *postfix); 63 64/** 65 * Writes the UTrie2 struct values. 66 * The {} and declaration etc. need to be included in prefix/postfix or 67 * printed before and after the array contents. 68 */ 69U_CAPI void U_EXPORT2 70usrc_writeUTrie2Struct(FILE *f, 71 const char *prefix, 72 const UTrie2 *pTrie, 73 const char *indexName, const char *dataName, 74 const char *postfix); 75 76/** 77 * Writes the contents of an array of mostly invariant characters. 78 * Characters 0..0x1f are printed as numbers, 79 * others as characters with single quotes: '%c'. 80 * 81 * The prefix and postfix are optional (can be NULL) and are written first/last. 82 * The prefix may contain a %ld or similar field for the array length. 83 * The {} and declaration etc. need to be included in prefix/postfix or 84 * printed before and after the array contents. 85 */ 86U_CAPI void U_EXPORT2 87usrc_writeArrayOfMostlyInvChars(FILE *f, 88 const char *prefix, 89 const char *p, int32_t length, 90 const char *postfix); 91 92#endif 93