2000-04-18 16:36:19 +00:00
|
|
|
/*
|
|
|
|
*******************************************************************************
|
|
|
|
*
|
|
|
|
* Copyright (C) 2000, International Business Machines
|
|
|
|
* Corporation and others. All Rights Reserved.
|
|
|
|
*
|
|
|
|
*******************************************************************************
|
|
|
|
* file name: uparse.h
|
|
|
|
* encoding: US-ASCII
|
|
|
|
* tab size: 8 (not used)
|
|
|
|
* indentation:4
|
|
|
|
*
|
|
|
|
* created on: 2000apr18
|
|
|
|
* created by: Markus W. Scherer
|
|
|
|
*
|
|
|
|
* This file provides a parser for files that are delimited by one single
|
|
|
|
* character like ';' or TAB. Example: the Unicode Character Properties files
|
|
|
|
* like UnicodeData.txt are semicolon-delimited.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __UPARSE_H__
|
|
|
|
#define __UPARSE_H__
|
|
|
|
|
|
|
|
#include "unicode/utypes.h"
|
|
|
|
|
2000-04-20 16:43:10 +00:00
|
|
|
/* Function type for u_parseDelimitedFile(). */
|
2001-02-08 22:30:24 +00:00
|
|
|
typedef void U_CALLCONV
|
2000-04-20 16:43:10 +00:00
|
|
|
UParseLineFn(void *context,
|
|
|
|
char *fields[][2],
|
|
|
|
int32_t fieldCount,
|
2000-04-18 16:36:19 +00:00
|
|
|
UErrorCode *pErrorCode);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Parser for files that are similar to UnicodeData.txt:
|
|
|
|
* This function opens the file and reads it line by line. It skips empty lines
|
|
|
|
* and comment lines that start with a '#'.
|
|
|
|
* All other lines are separated into fields with one delimiter character
|
|
|
|
* (semicolon for Unicode Properties files) between two fields. The last field in
|
|
|
|
* a line does not need to be terminated with a delimiter.
|
|
|
|
*
|
2000-04-20 16:43:10 +00:00
|
|
|
* For each line, after segmenting it, a line function is called.
|
|
|
|
* It gets passed the array of field start and limit pointers that is
|
|
|
|
* passed into this parser and filled by it for each line.
|
|
|
|
* For each field i of the line, the start pointer in fields[i][0]
|
|
|
|
* points to the beginning of the field, while the limit pointer in fields[i][1]
|
|
|
|
* points behind the field, i.e., to the delimiter or the line end.
|
|
|
|
*
|
|
|
|
* The context parameter of the line function is
|
|
|
|
* the same as the one for the parse function.
|
|
|
|
*
|
|
|
|
* The line function may modify the contents of the fields including the
|
|
|
|
* limit characters.
|
|
|
|
*
|
2000-04-18 16:36:19 +00:00
|
|
|
* If the file cannot be opened, or there is a parsing error or a field function
|
|
|
|
* sets *pErrorCode, then the parser returns with *pErrorCode set to an error code.
|
|
|
|
*/
|
|
|
|
U_CAPI void U_EXPORT2
|
|
|
|
u_parseDelimitedFile(const char *filename, char delimiter,
|
2000-04-20 16:43:10 +00:00
|
|
|
char *fields[][2], int32_t fieldCount,
|
|
|
|
UParseLineFn *lineFn, void *context,
|
2000-04-18 16:36:19 +00:00
|
|
|
UErrorCode *pErrorCode);
|
|
|
|
|
|
|
|
#endif
|