~ubuntu-branches/ubuntu/saucy/pyicu/saucy

1 by Bernd Zeimetz
Import upstream version 0.8
1
/* ====================================================================
1.1.2 by Bernd Zeimetz
Import upstream version 0.9
2
 * Copyright (c) 2004-2010 Open Source Applications Foundation.
1 by Bernd Zeimetz
Import upstream version 0.8
3
 *
4
 * Permission is hereby granted, free of charge, to any person obtaining a
5
 * copy of this software and associated documentation files (the "Software"),
6
 * to deal in the Software without restriction, including without limitation
7
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
 * and/or sell copies of the Software, and to permit persons to whom the
9
 * Software is furnished to do so, subject to the following conditions: 
10
 *
11
 * The above copyright notice and this permission notice shall be included
12
 * in all copies or substantial portions of the Software. 
13
 *
14
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20
 * DEALINGS IN THE SOFTWARE.
21
 * ====================================================================
22
 */
23
24
#include "common.h"
25
#include "structmember.h"
26
27
#include "errors.h"
28
1.1.5 by Jakub Wilk
Import upstream version 1.3
29
static void _setMsg(PyObject *messages, UErrorCode code, const char *msg)
1 by Bernd Zeimetz
Import upstream version 0.8
30
{
31
    PyObject *pycode = PyInt_FromLong((long) code);
32
    PyObject *pymsg = PyString_FromString(msg);
33
34
    PyObject_SetItem(messages, pycode, pymsg);
35
    Py_DECREF(pycode);
36
    Py_DECREF(pymsg);
37
}
38
39
static void registerErrors(PyObject *messages)
40
{
41
    _setMsg(messages, U_USING_FALLBACK_WARNING, "A resource bundle lookup returned a fallback result (not an error)");
42
    _setMsg(messages, U_ERROR_WARNING_START, "Start of information results (semantically successful)");
43
    _setMsg(messages, U_USING_DEFAULT_WARNING, "A resource bundle lookup returned a result from the root locale (not an error)");
44
    _setMsg(messages, U_SAFECLONE_ALLOCATED_WARNING, "A SafeClone operation required allocating memory (informational only)");
45
    _setMsg(messages, U_STATE_OLD_WARNING, "ICU has to use compatibility layer to construct the service. Expect performance/memory usage degradation. Consider upgrading");
46
    _setMsg(messages, U_STRING_NOT_TERMINATED_WARNING, "An output string could not be NUL-terminated because output length==destCapacity.");
47
    _setMsg(messages, U_SORT_KEY_TOO_SHORT_WARNING, "Number of levels requested in getBound is higher than the number of levels in the sort key");
48
    _setMsg(messages, U_AMBIGUOUS_ALIAS_WARNING, "This converter alias can go to different converter implementations");
49
    _setMsg(messages, U_DIFFERENT_UCA_VERSION, "ucol_open encountered a mismatch between UCA version and collator image version, so the collator was constructed from rules. No impact to further function");
50
    _setMsg(messages, U_ERROR_WARNING_LIMIT, "This must always be the last warning value to indicate the limit for UErrorCode warnings (last warning code +1)");
51
    _setMsg(messages, U_ZERO_ERROR, "No error, no warning.");
52
    _setMsg(messages, U_ILLEGAL_ARGUMENT_ERROR, "Illegal argument");
53
    _setMsg(messages, U_MISSING_RESOURCE_ERROR, "The requested resource cannot be found");
54
    _setMsg(messages, U_INVALID_FORMAT_ERROR, "Data format is not what is expected");
55
    _setMsg(messages, U_FILE_ACCESS_ERROR, "The requested file cannot be found");
56
    _setMsg(messages, U_INTERNAL_PROGRAM_ERROR, "Indicates a bug in the library code");
57
    _setMsg(messages, U_MESSAGE_PARSE_ERROR, "Unable to parse a message (message format)");
58
    _setMsg(messages, U_MEMORY_ALLOCATION_ERROR, "Memory allocation error");
59
    _setMsg(messages, U_INDEX_OUTOFBOUNDS_ERROR, "Trying to access the index that is out of bounds");
60
    _setMsg(messages, U_PARSE_ERROR, "Equivalent to Java ParseException");
61
    _setMsg(messages, U_INVALID_CHAR_FOUND, "Character conversion: Unmappable input sequence. In other APIs: Invalid character.");
62
    _setMsg(messages, U_TRUNCATED_CHAR_FOUND, "Character conversion: Incomplete input sequence.");
63
    _setMsg(messages, U_ILLEGAL_CHAR_FOUND, "Character conversion: Illegal input sequence/combination of input units..");
64
    _setMsg(messages, U_INVALID_TABLE_FORMAT, "Conversion table file found, but corrupted");
65
    _setMsg(messages, U_INVALID_TABLE_FILE, "Conversion table file not found");
66
    _setMsg(messages, U_BUFFER_OVERFLOW_ERROR, "A result would not fit in the supplied buffer");
67
    _setMsg(messages, U_UNSUPPORTED_ERROR, "Requested operation not supported in current context");
68
    _setMsg(messages, U_RESOURCE_TYPE_MISMATCH, "an operation is requested over a resource that does not support it");
69
    _setMsg(messages, U_ILLEGAL_ESCAPE_SEQUENCE, "ISO-2022 illegal escape sequence");
70
    _setMsg(messages, U_UNSUPPORTED_ESCAPE_SEQUENCE, "ISO-2022 unsupported escape sequence");
71
    _setMsg(messages, U_NO_SPACE_AVAILABLE, "No space available for in-buffer expansion for Arabic shaping");
72
    _setMsg(messages, U_CE_NOT_FOUND_ERROR, "Currently used only while setting variable top, but can be used generally");
73
    _setMsg(messages, U_PRIMARY_TOO_LONG_ERROR, "User tried to set variable top to a primary that is longer than two bytes");
74
    _setMsg(messages, U_STATE_TOO_OLD_ERROR, "ICU cannot construct a service from this state, as it is no longer supported");
75
    _setMsg(messages, U_TOO_MANY_ALIASES_ERROR, "There are too many aliases in the path to the requested resource. It is very possible that a circular alias definition has occured");
76
    _setMsg(messages, U_ENUM_OUT_OF_SYNC_ERROR, "UEnumeration out of sync with underlying collection");
77
    _setMsg(messages, U_INVARIANT_CONVERSION_ERROR, "Unable to convert a UChar* string to char* with the invariant converter.");
78
    _setMsg(messages, U_INVALID_STATE_ERROR, "Requested operation can not be completed with ICU in its current state");
79
    _setMsg(messages, U_COLLATOR_VERSION_MISMATCH, "Collator version is not compatible with the base version");
80
    _setMsg(messages, U_USELESS_COLLATOR_ERROR, "Collator is options only and no base is specified");
81
    _setMsg(messages, U_STANDARD_ERROR_LIMIT, "This must always be the last value to indicate the limit for standard errors");
82
    _setMsg(messages, U_BAD_VARIABLE_DEFINITION, "Missing '$' or duplicate variable name");
83
    _setMsg(messages, U_PARSE_ERROR_START, "Start of Transliterator errors");
84
    _setMsg(messages, U_MALFORMED_RULE, "Elements of a rule are misplaced");
85
    _setMsg(messages, U_MALFORMED_SET, "A UnicodeSet pattern is invalid");
86
    _setMsg(messages, U_MALFORMED_SYMBOL_REFERENCE, "UNUSED as of ICU 2.4");
87
    _setMsg(messages, U_MALFORMED_UNICODE_ESCAPE, "A Unicode escape pattern is invalid");
88
    _setMsg(messages, U_MALFORMED_VARIABLE_DEFINITION, "A variable definition is invalid");
89
    _setMsg(messages, U_MALFORMED_VARIABLE_REFERENCE, "A variable reference is invalid");
90
    _setMsg(messages, U_MISMATCHED_SEGMENT_DELIMITERS, "UNUSED as of ICU 2.4");
91
    _setMsg(messages, U_MISPLACED_ANCHOR_START, "A start anchor appears at an illegal position");
92
    _setMsg(messages, U_MISPLACED_CURSOR_OFFSET, "A cursor offset occurs at an illegal position");
93
    _setMsg(messages, U_MISPLACED_QUANTIFIER, "A quantifier appears after a segment close delimiter");
94
    _setMsg(messages, U_MISSING_OPERATOR, "A rule contains no operator");
95
    _setMsg(messages, U_MISSING_SEGMENT_CLOSE, "UNUSED as of ICU 2.4");
96
    _setMsg(messages, U_MULTIPLE_ANTE_CONTEXTS, "More than one ante context");
97
    _setMsg(messages, U_MULTIPLE_CURSORS, "More than one cursor");
98
    _setMsg(messages, U_MULTIPLE_POST_CONTEXTS, "More than one post context");
99
    _setMsg(messages, U_TRAILING_BACKSLASH, "A dangling backslash");
100
    _setMsg(messages, U_UNDEFINED_SEGMENT_REFERENCE, "A segment reference does not correspond to a defined segment");
101
    _setMsg(messages, U_UNDEFINED_VARIABLE, "A variable reference does not correspond to a defined variable");
102
    _setMsg(messages, U_UNQUOTED_SPECIAL, "A special character was not quoted or escaped");
103
    _setMsg(messages, U_UNTERMINATED_QUOTE, "A closing single quote is missing");
104
    _setMsg(messages, U_RULE_MASK_ERROR, "A rule is hidden by an earlier more general rule");
105
    _setMsg(messages, U_MISPLACED_COMPOUND_FILTER, "A compound filter is in an invalid location");
106
    _setMsg(messages, U_MULTIPLE_COMPOUND_FILTERS, "More than one compound filter");
107
    _setMsg(messages, U_INVALID_RBT_SYNTAX, "A '::id' rule was passed to the RuleBasedTransliterator parser");
108
    _setMsg(messages, U_INVALID_PROPERTY_PATTERN, "UNUSED as of ICU 2.4");
109
    _setMsg(messages, U_MALFORMED_PRAGMA, "A 'use' pragma is invalid");
110
    _setMsg(messages, U_UNCLOSED_SEGMENT, "A closing ')' is missing");
111
    _setMsg(messages, U_ILLEGAL_CHAR_IN_SEGMENT, "UNUSED as of ICU 2.4");
112
    _setMsg(messages, U_VARIABLE_RANGE_EXHAUSTED, "Too many stand-ins generated for the given variable range");
113
    _setMsg(messages, U_VARIABLE_RANGE_OVERLAP, "The variable range overlaps characters used in rules");
114
    _setMsg(messages, U_ILLEGAL_CHARACTER, "A special character is outside its allowed context");
115
    _setMsg(messages, U_INTERNAL_TRANSLITERATOR_ERROR, "Internal transliterator system error");
116
    _setMsg(messages, U_INVALID_ID, "A '::id' rule specifies an unknown transliterator");
117
    _setMsg(messages, U_INVALID_FUNCTION, "A '&fn()' rule specifies an unknown transliterator");
118
    _setMsg(messages, U_PARSE_ERROR_LIMIT, "The limit for Transliterator errors");
119
    _setMsg(messages, U_UNEXPECTED_TOKEN, "Syntax error in format pattern");
120
    _setMsg(messages, U_FMT_PARSE_ERROR_START, "Start of format library errors");
121
    _setMsg(messages, U_MULTIPLE_DECIMAL_SEPARATORS, "More than one decimal separator in number pattern");
122
    _setMsg(messages, U_MULTIPLE_EXPONENTIAL_SYMBOLS, "More than one exponent symbol in number pattern");
123
    _setMsg(messages, U_MALFORMED_EXPONENTIAL_PATTERN, "Grouping symbol in exponent pattern");
124
    _setMsg(messages, U_MULTIPLE_PERCENT_SYMBOLS, "More than one percent symbol in number pattern");
125
    _setMsg(messages, U_MULTIPLE_PERMILL_SYMBOLS, "More than one permill symbol in number pattern");
126
    _setMsg(messages, U_MULTIPLE_PAD_SPECIFIERS, "More than one pad symbol in number pattern");
127
    _setMsg(messages, U_PATTERN_SYNTAX_ERROR, "Syntax error in format pattern");
128
    _setMsg(messages, U_ILLEGAL_PAD_POSITION, "Pad symbol misplaced in number pattern");
129
    _setMsg(messages, U_UNMATCHED_BRACES, "Braces do not match in message pattern");
130
    _setMsg(messages, U_UNSUPPORTED_PROPERTY, "UNUSED as of ICU 2.4");
131
    _setMsg(messages, U_UNSUPPORTED_ATTRIBUTE, "UNUSED as of ICU 2.4");
132
    _setMsg(messages, U_FMT_PARSE_ERROR_LIMIT, "The limit for format library errors");
133
    _setMsg(messages, U_BRK_ERROR_START, "Start of codes indicating Break Iterator failures");
134
    _setMsg(messages, U_BRK_INTERNAL_ERROR, "An internal error (bug) was detected.");
135
    _setMsg(messages, U_BRK_HEX_DIGITS_EXPECTED, "Hex digits expected as part of a escaped char in a rule.");
136
    _setMsg(messages, U_BRK_SEMICOLON_EXPECTED, "Missing ';' at the end of a RBBI rule.");
137
    _setMsg(messages, U_BRK_RULE_SYNTAX, "Syntax error in RBBI rule.");
138
    _setMsg(messages, U_BRK_UNCLOSED_SET, "UnicodeSet witing an RBBI rule missing a closing ']'.");
139
    _setMsg(messages, U_BRK_ASSIGN_ERROR, "Syntax error in RBBI rule assignment statement.");
140
    _setMsg(messages, U_BRK_VARIABLE_REDFINITION, "RBBI rule $Variable redefined.");
141
    _setMsg(messages, U_BRK_MISMATCHED_PAREN, "Mis-matched parentheses in an RBBI rule.");
142
    _setMsg(messages, U_BRK_NEW_LINE_IN_QUOTED_STRING, "Missing closing quote in an RBBI rule.");
143
    _setMsg(messages, U_BRK_UNDEFINED_VARIABLE, "Use of an undefined $Variable in an RBBI rule.");
144
    _setMsg(messages, U_BRK_INIT_ERROR, "Initialization failure.  Probable missing ICU Data.");
145
    _setMsg(messages, U_BRK_RULE_EMPTY_SET, "Rule contains an empty Unicode Set.");
146
    _setMsg(messages, U_BRK_UNRECOGNIZED_OPTION, "!!option in RBBI rules not recognized.");
147
    _setMsg(messages, U_BRK_MALFORMED_RULE_TAG, "The {nnn} tag on a rule is mal formed");
148
    _setMsg(messages, U_BRK_ERROR_LIMIT, "This must always be the last value to indicate the limit for Break Iterator failures");
149
    _setMsg(messages, U_REGEX_ERROR_START, "Start of codes indicating Regexp failures");
150
    _setMsg(messages, U_REGEX_INTERNAL_ERROR, "An internal error (bug) was detected.");
151
    _setMsg(messages, U_REGEX_RULE_SYNTAX, "Syntax error in regexp pattern.");
152
    _setMsg(messages, U_REGEX_INVALID_STATE, "RegexMatcher in invalid state for requested operation");
153
    _setMsg(messages, U_REGEX_BAD_ESCAPE_SEQUENCE, "Unrecognized backslash escape sequence in pattern");
154
    _setMsg(messages, U_REGEX_PROPERTY_SYNTAX, "Incorrect Unicode property");
155
    _setMsg(messages, U_REGEX_UNIMPLEMENTED, "Use of regexp feature that is not yet implemented.");
156
    _setMsg(messages, U_REGEX_MISMATCHED_PAREN, "Incorrectly nested parentheses in regexp pattern.");
157
    _setMsg(messages, U_REGEX_NUMBER_TOO_BIG, "Decimal number is too large.");
158
    _setMsg(messages, U_REGEX_BAD_INTERVAL, "Error in {min,max} interval");
159
    _setMsg(messages, U_REGEX_MAX_LT_MIN, "In {min,max}, max is less than min.");
160
    _setMsg(messages, U_REGEX_INVALID_BACK_REF, "Back-reference to a non-existent capture group.");
161
    _setMsg(messages, U_REGEX_INVALID_FLAG, "Invalid value for match mode flags.");
162
    _setMsg(messages, U_REGEX_LOOK_BEHIND_LIMIT, "Look-Behind pattern matches must have a bounded maximum length.");
163
    _setMsg(messages, U_REGEX_SET_CONTAINS_STRING, "Regexps cannot have UnicodeSets containing strings.");
164
    _setMsg(messages, U_REGEX_ERROR_LIMIT, "This must always be the last value to indicate the limit for regexp errors");
165
    _setMsg(messages, U_ERROR_LIMIT, "This must always be the last value to indicate the limit for UErrorCode (last error code +1)");
166
}
167
168
void _init_errors(PyObject *m)
169
{
170
    PyObject *messages = PyObject_GetAttrString(PyExc_ICUError, "messages");
171
172
    registerErrors(messages);
173
    Py_DECREF(messages);
174
}