// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright ( C ) 2005 - 2012 , International Business Machines
* Corporation and others . All Rights Reserved .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* file name : writesrc . h
* encoding : UTF - 8
* tab size : 8 ( not used )
* indentation : 4
*
* created on : 2005 apr23
* created by : Markus W . Scherer
*
* Helper functions for writing source code for data .
*/
#ifndef __WRITESRC_H__
#define __WRITESRC_H__
#include <stdio.h>
#include "unicode/utypes.h"
#include "unicode/ucpmap.h"
#include "unicode/ucptrie.h"
#include "unicode/umutablecptrie.h"
#include "unicode/uset.h"
#include "utrie2.h"
/**
* An input to some of the functions in this file specifying whether to write data
* as C / C + + code initializers or as TOML .
*/
typedef enum UTargetSyntax {
UPRV_TARGET_SYNTAX_CCODE =
0 ,
UPRV_TARGET_SYNTAX_TOML =
1 ,
} UTargetSyntax;
/**
* Creates a source text file and writes a header comment with the ICU copyright .
* Writes a C / Java - style comment with the generator name .
*/
U_CAPI FILE * U_EXPORT2
usrc_create(
const char *path,
const char *filename, int32_t copyrightYear,
const char *gen
erator);
/**
* Creates a source text file and writes a header comment with the ICU copyright .
* Writes the comment with # lines , as used in scripts and text data .
*/
U_CAPI FILE * U_EXPORT2
usrc_createTextData(const char *path, const char *filename, int32_t copyrightYear, const char *generator);
/**
* Writes the ICU copyright to a file stream , with configurable year and comment style .
*/
U_CAPI void U_EXPORT2
usrc_writeCopyrightHeader(FILE *f, const char *prefix, int32_t copyrightYear);
/**
* Writes information about the file being machine - generated .
*/
U_CAPI void U_EXPORT2
usrc_writeFileNameGeneratedBy(
FILE *f,
const char *prefix,
const char *filename,
const char *generator);
/**
* Writes the contents of an array of 8 / 16 / 32 / 64 - bit words .
* The prefix and postfix are optional ( can be NULL ) and are written first / last .
* The prefix may contain a % ld or similar field for the array length .
* The { } and declaration etc . need to be included in prefix / postfix or
* printed before and after the array contents .
*/
U_CAPI void U_EXPORT2
usrc_writeArray(FILE *f,
const char *prefix,
const void *p, int32_t width, int32_t length,
const char *indent,
const char *postfix);
/**
* Calls usrc_writeArray ( ) for the index and data arrays of a frozen UTrie2 .
* Only the index array is written for a 16 - bit UTrie2 . In this case , dataPrefix
* is ignored and can be NULL .
*/
U_CAPI void U_EXPORT2
usrc_writeUTrie2Arrays(FILE *f,
const char *indexPrefix, const char *dataPrefix,
const UTrie2 *pTrie,
const char *postfix);
/**
* Writes the UTrie2 struct values .
* The { } and declaration etc . need to be included in prefix / postfix or
* printed before and after the array contents .
*/
U_CAPI void U_EXPORT2
usrc_writeUTrie2Struct(FILE *f,
const char *prefix,
const UTrie2 *pTrie,
const char *indexName, const char *dataName,
const char *postfix);
/**
* Calls usrc_writeArray ( ) for the index and data arrays of a UCPTrie .
*/
U_CAPI void U_EXPORT2
usrc_writeUCPTrieArrays(FILE *f,
const char *indexPrefix, const char *dataPrefix,
const UCPTrie *pTrie,
const char *postfix,
UTargetSyntax syntax);
/**
* Writes the UCPTrie struct values .
* The { } and declaration etc . need to be included in prefix / postfix or
* printed before and after the array contents .
*/
U_CAPI void U_EXPORT2
usrc_writeUCPTrieStruct(FILE *f,
const char *prefix,
const UCPTrie *pTrie,
const char *indexName, const char *dataName,
const char *postfix,
UTargetSyntax syntax);
/**
* Writes the UCPTrie arrays and struct values .
*/
U_CAPI void U_EXPORT2
usrc_writeUCPTrie(FILE *f, const char *name, const UCPTrie *pTrie, UTargetSyntax syntax);
/**
* Writes the UnicodeSet range and string lists .
*/
U_CAPI void U_EXPORT2
usrc_writeUnicodeSet(
FILE *f,
const USet *pSet,
UTargetSyntax syntax);
#ifdef __cplusplus
U_NAMESPACE_BEGIN
class U_TOOLUTIL_API ValueNameGetter {
public :
virtual ~ValueNameGetter();
virtual const char *getName(uint32_t value) = 0 ;
};
U_NAMESPACE_END
/**
* Writes the UCPMap ranges list .
*
* The " valueNameGetter " argument is optional ; ignored if nullptr .
* If present , it will be used to look up value name strings .
*/
U_CAPI void U_EXPORT2
usrc_writeUCPMap(
FILE *f,
const UCPMap *pMap,
icu::ValueNameGetter *valueNameGetter,
UTargetSyntax syntax);
#endif // __cplusplus
/**
* Writes the contents of an array of mostly invariant characters .
* Characters 0 . . 0 x1f are printed as numbers ,
* others as characters with single quotes : ' % c ' .
*
* The prefix and postfix are optional ( can be NULL ) and are written first / last .
* The prefix may contain a % ld or similar field for the array length .
* The { } and declaration etc . need to be included in prefix / postfix or
* printed before and after the array contents .
*/
U_CAPI void U_EXPORT2
usrc_writeArrayOfMostlyInvChars(FILE *f,
const char *prefix,
const char *p, int32_t length,
const char *postfix);
/**
* Writes a syntactically valid Unicode string in all ASCII , escaping quotes
* and non - ASCII characters .
*/
U_CAPI void U_EXPORT2
usrc_writeStringAsASCII(FILE *f,
const UChar* ptr, int32_t length,
UTargetSyntax syntax);
#endif
Messung V0.5 in Prozent C=92 H=100 G=95
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-09-30)
¤
*© Formatika GbR, Deutschland