2000-03-18 01:19:39 +00:00
|
|
|
/*
|
|
|
|
**********************************************************************
|
2000-06-27 19:00:38 +00:00
|
|
|
* Copyright (C) 1999-2000, International Business Machines
|
2000-03-18 01:19:39 +00:00
|
|
|
* Corporation and others. All Rights Reserved.
|
|
|
|
**********************************************************************
|
|
|
|
* Date Name Description
|
|
|
|
* 03/14/00 aliu Creation.
|
2000-06-27 19:00:38 +00:00
|
|
|
* 06/27/00 aliu Change from C++ class to C struct
|
2000-03-18 01:19:39 +00:00
|
|
|
**********************************************************************
|
|
|
|
*/
|
|
|
|
#ifndef PARSEERR_H
|
|
|
|
#define PARSEERR_H
|
|
|
|
|
2000-06-03 04:18:06 +00:00
|
|
|
#include "unicode/utypes.h"
|
2000-06-27 16:27:28 +00:00
|
|
|
|
|
|
|
|
2000-06-27 19:00:38 +00:00
|
|
|
/**
|
|
|
|
* The capacity of the context strings in UParseError.
|
|
|
|
*/
|
|
|
|
enum { U_PARSE_CONTEXT_LEN = 16 };
|
2000-06-03 04:18:06 +00:00
|
|
|
|
2000-03-18 01:19:39 +00:00
|
|
|
/**
|
2000-06-27 19:00:38 +00:00
|
|
|
* A UParseError struct is used to returned detailed information about
|
2000-03-18 01:19:39 +00:00
|
|
|
* parsing errors. It is used by ICU parsing engines that parse long
|
|
|
|
* rules, patterns, or programs, where the text being parsed is long
|
|
|
|
* enough that more information than a UErrorCode is needed to
|
|
|
|
* localize the error.
|
|
|
|
*
|
|
|
|
* <p>The code field is an integer error code specific to each parsing
|
|
|
|
* engine, but globally unique. See the engine header file for
|
|
|
|
* possible values. The line, offset, and context fields are
|
|
|
|
* optional; parsing engines may choose not to use to use them.
|
|
|
|
*
|
2000-06-27 19:00:38 +00:00
|
|
|
* <p>Examples of engines which use UParseError (or may use it in the
|
2000-03-18 01:19:39 +00:00
|
|
|
* future) are RuleBasedTransliterator and RuleBasedBreakIterator.
|
|
|
|
*/
|
2000-06-27 19:00:38 +00:00
|
|
|
typedef struct _UParseError {
|
|
|
|
|
2000-03-18 01:19:39 +00:00
|
|
|
/**
|
|
|
|
* An integer indicating the type of error. If no error was
|
|
|
|
* encountered, the parse engine sets this to zero, and the
|
|
|
|
* other fields' values should be ignored.
|
|
|
|
*
|
|
|
|
* <p>Each parse engine should use a range of codes from
|
|
|
|
* 0xNNNN0001 to 0xNNNNFFFF, where NNNN is a 16-bit integer
|
|
|
|
* between 0x0001 and 0xFFFF unique to each parse engine.
|
|
|
|
* Parse engines should define the enum PARSE_ERROR_BASE
|
|
|
|
* to be 0xNNNN0000.
|
|
|
|
*/
|
|
|
|
int32_t code;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The line on which the error occured. If the parse engine
|
|
|
|
* is not using this field, it should set it to zero. Otherwise
|
|
|
|
* it should be a positive integer.
|
|
|
|
*/
|
|
|
|
int32_t line;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The character offset to the error. If the line field is
|
|
|
|
* being used, then this offset is from the start of the line.
|
|
|
|
* If the line field is not being used, then this offset is from
|
|
|
|
* the start of the text.
|
|
|
|
*/
|
|
|
|
UTextOffset offset;
|
|
|
|
|
|
|
|
/**
|
2000-06-27 19:00:38 +00:00
|
|
|
* Textual context before the error. Null-terminated.
|
|
|
|
* May be the empty string if not implemented by parser.
|
2000-06-27 16:27:28 +00:00
|
|
|
*/
|
2000-06-27 19:00:38 +00:00
|
|
|
UChar preContext[U_PARSE_CONTEXT_LEN];
|
2000-06-27 16:27:28 +00:00
|
|
|
|
|
|
|
/**
|
2000-06-27 19:00:38 +00:00
|
|
|
* Textual context after the error. Null-terminated.
|
|
|
|
* May be the empty string if not implemented by parser.
|
2000-06-27 16:27:28 +00:00
|
|
|
*/
|
2000-06-27 19:00:38 +00:00
|
|
|
UChar postContext[U_PARSE_CONTEXT_LEN];
|
2000-06-27 16:27:28 +00:00
|
|
|
|
|
|
|
} UParseError;
|
|
|
|
|
|
|
|
#endif
|