18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project********************************************************************** 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Copyright (C) 1999-2004, International Business Machines 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Corporation and others. All Rights Reserved. 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project********************************************************************** 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Date Name Description 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 03/14/00 aliu Creation. 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 06/27/00 aliu Change from C++ class to C struct 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project********************************************************************** 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef PARSEERR_H 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PARSEERR_H 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "unicode/utypes.h" 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The capacity of the context strings in UParseError. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectenum { U_PARSE_CONTEXT_LEN = 16 }; 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * A UParseError struct is used to returned detailed information about 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * parsing errors. It is used by ICU parsing engines that parse long 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * rules, patterns, or programs, where the text being parsed is long 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * enough that more information than a UErrorCode is needed to 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * localize the error. 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <p>The line, offset, and context fields are optional; parsing 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * engines may choose not to use to use them. 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <p>The preContext and postContext strings include some part of the 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * context surrounding the error. If the source text is "let for=7" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * and "for" is the error (e.g., because it is a reserved word), then 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * some examples of what a parser might produce are the following: 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <pre> 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * preContext postContext 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * "" "" The parser does not support context 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * "let " "=7" Pre- and post-context only 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * "let " "for=7" Pre- and post-context and error text 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * "" "for" Error text only 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * </pre> 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <p>Examples of engines which use UParseError (or may use it in the 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * future) are Transliterator, RuleBasedBreakIterator, and 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * RegexPattern. 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct UParseError { 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The line on which the error occured. If the parser uses this 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * field, it sets it to the line number of the source text line on 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * which the error appears, which will be be a value >= 1. If the 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * parse does not support line numbers, the value will be <= 0. 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int32_t line; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The character offset to the error. If the line field is >= 1, 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * then this is the offset from the start of the line. Otherwise, 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * this is the offset from the start of the text. If the parser 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * does not support this field, it will have a value < 0. 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int32_t offset; 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Textual context before the error. Null-terminated. The empty 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * string if not supported by parser. 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project UChar preContext[U_PARSE_CONTEXT_LEN]; 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /** 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The error itself and/or textual context after the error. 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Null-terminated. The empty string if not supported by parser. 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project UChar postContext[U_PARSE_CONTEXT_LEN]; 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} UParseError; 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 89