126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
|
* OFXMLParser is an event-based XML parser which calls the delegate's callbacks
* as soon as it finds something, thus suitable for streams as well.
*/
OF_SUBCLASSING_RESTRICTED
@interface OFXMLParser: OFObject
{
id <OFXMLParserDelegate> _Nullable _delegate;
enum of_xml_parser_state {
OF_XMLPARSER_IN_BYTE_ORDER_MARK,
OF_XMLPARSER_OUTSIDE_TAG,
OF_XMLPARSER_TAG_OPENED,
OF_XMLPARSER_IN_PROCESSING_INSTRUCTION,
OF_XMLPARSER_IN_TAG_NAME,
OF_XMLPARSER_IN_CLOSE_TAG_NAME,
OF_XMLPARSER_IN_TAG,
OF_XMLPARSER_IN_ATTRIBUTE_NAME,
OF_XMLPARSER_EXPECT_ATTRIBUTE_EQUAL_SIGN,
OF_XMLPARSER_EXPECT_ATTRIBUTE_DELIMITER,
OF_XMLPARSER_IN_ATTRIBUTE_VALUE,
OF_XMLPARSER_EXPECT_TAG_CLOSE,
OF_XMLPARSER_EXPECT_SPACE_OR_TAG_CLOSE,
OF_XMLPARSER_IN_EXCLAMATION_MARK,
OF_XMLPARSER_IN_CDATA_OPENING,
OF_XMLPARSER_IN_CDATA,
OF_XMLPARSER_IN_COMMENT_OPENING,
OF_XMLPARSER_IN_COMMENT_1,
OF_XMLPARSER_IN_COMMENT_2,
OF_XMLPARSER_IN_DOCTYPE
enum {
OFXMLParserStateInByteOrderMark,
OFXMLParserStateOutsideTag,
OFXMLParserStateTagOpened,
OFXMLParserStateInProcessingInstruction,
OFXMLParserStateInTagName,
OFXMLParserStateInCloseTagName,
OFXMLParserStateInTag,
OFXMLParserStateInAttributeName,
OFXMLParserStateExpectAttributeEqualSign,
OFXMLParserStateExpectAttributeDelimiter,
OFXMLParserStateInAttributeValue,
OFXMLParserStateExpectTagClose,
OFXMLParserStateExpectSpaceOrTagClose,
OFXMLParserStateInExclamationMark,
OFXMLParserStateInCDATAOpening,
OFXMLParserStateInCDATA,
OFXMLParserStateInCommentOpening,
OFXMLParserStateInComment1,
OFXMLParserStateInComment2,
OFXMLParserStateInDOCTYPE
} _state;
size_t _i, _last;
const char *_Nullable _data;
OFMutableData *_buffer;
OFString *_Nullable _name, *_Nullable _prefix;
OFMutableArray
OF_GENERIC(OFMutableDictionary OF_GENERIC(OFString *, OFString *) *)
*_namespaces;
OFMutableArray OF_GENERIC(OFXMLAttribute *) *_attributes;
OFString *_Nullable _attributeName, *_Nullable _attributePrefix;
char _delimiter;
OFMutableArray OF_GENERIC(OFString *) *_previous;
size_t _level;
bool _acceptProlog;
size_t _lineNumber;
bool _lastCarriageReturn, _finishedParsing;
of_string_encoding_t _encoding;
OFStringEncoding _encoding;
size_t _depthLimit;
}
/**
* @brief The delegate that is used by the XML parser.
*/
@property OF_NULLABLE_PROPERTY (assign, nonatomic)
|