@@ -61,41 +61,42 @@ static void inCDATAState(OFXMLParser *); static void inCommentOpeningState(OFXMLParser *); static void inCommentState1(OFXMLParser *); static void inCommentState2(OFXMLParser *); static void inDOCTYPEState(OFXMLParser *); -typedef void (*state_function_t)(OFXMLParser *); -static state_function_t lookupTable[] = { - [OF_XMLPARSER_IN_BYTE_ORDER_MARK] = inByteOrderMarkState, - [OF_XMLPARSER_OUTSIDE_TAG] = outsideTagState, - [OF_XMLPARSER_TAG_OPENED] = tagOpenedState, - [OF_XMLPARSER_IN_PROCESSING_INSTRUCTION] = inProcessingInstructionState, - [OF_XMLPARSER_IN_TAG_NAME] = inTagNameState, - [OF_XMLPARSER_IN_CLOSE_TAG_NAME] = inCloseTagNameState, - [OF_XMLPARSER_IN_TAG] = inTagState, - [OF_XMLPARSER_IN_ATTRIBUTE_NAME] = inAttributeNameState, - [OF_XMLPARSER_EXPECT_ATTRIBUTE_EQUAL_SIGN] = +typedef void (*StateFunction)(OFXMLParser *); +static StateFunction lookupTable[] = { + [OFXMLParserStateInByteOrderMark] = inByteOrderMarkState, + [OFXMLParserStateOutsideTag] = outsideTagState, + [OFXMLParserStateTagOpened] = tagOpenedState, + [OFXMLParserStateInProcessingInstruction] = + inProcessingInstructionState, + [OFXMLParserStateInTagName] = inTagNameState, + [OFXMLParserStateInCloseTagName] = inCloseTagNameState, + [OFXMLParserStateInTag] = inTagState, + [OFXMLParserStateInAttributeName] = inAttributeNameState, + [OFXMLParserStateExpectAttributeEqualSign] = expectAttributeEqualSignState, - [OF_XMLPARSER_EXPECT_ATTRIBUTE_DELIMITER] = + [OFXMLParserStateExpectAttributeDelimiter] = expectAttributeDelimiterState, - [OF_XMLPARSER_IN_ATTRIBUTE_VALUE] = inAttributeValueState, - [OF_XMLPARSER_EXPECT_TAG_CLOSE] = expectTagCloseState, - [OF_XMLPARSER_EXPECT_SPACE_OR_TAG_CLOSE] = expectSpaceOrTagCloseState, - [OF_XMLPARSER_IN_EXCLAMATION_MARK] = inExclamationMarkState, - [OF_XMLPARSER_IN_CDATA_OPENING] = inCDATAOpeningState, - [OF_XMLPARSER_IN_CDATA] = inCDATAState, - [OF_XMLPARSER_IN_COMMENT_OPENING] = inCommentOpeningState, - [OF_XMLPARSER_IN_COMMENT_1] = inCommentState1, - [OF_XMLPARSER_IN_COMMENT_2] = inCommentState2, - [OF_XMLPARSER_IN_DOCTYPE] = inDOCTYPEState + [OFXMLParserStateInAttributeValue] = inAttributeValueState, + [OFXMLParserStateExpectTagClose] = expectTagCloseState, + [OFXMLParserStateExpectSpaceOrTagClose] = expectSpaceOrTagCloseState, + [OFXMLParserStateInExclamationMark] = inExclamationMarkState, + [OFXMLParserStateInCDATAOpening] = inCDATAOpeningState, + [OFXMLParserStateInCDATA] = inCDATAState, + [OFXMLParserStateInCommentOpening] = inCommentOpeningState, + [OFXMLParserStateInComment1] = inCommentState1, + [OFXMLParserStateInComment2] = inCommentState2, + [OFXMLParserStateInDOCTYPE] = inDOCTYPEState }; static OF_INLINE void appendToBuffer(OFMutableData *buffer, const char *string, - of_string_encoding_t encoding, size_t length) + OFStringEncoding encoding, size_t length) { - if OF_LIKELY(encoding == OF_STRING_ENCODING_UTF_8) + if OF_LIKELY(encoding == OFStringEncodingUTF8) [buffer addItems: string count: length]; else { void *pool = objc_autoreleasePoolPush(); OFString *tmp = [OFString stringWithCString: string encoding: encoding @@ -209,11 +210,11 @@ @"xmlns", @"http://www.w3.org/2000/xmlns/", nil]; [_namespaces addObject: dict]; _acceptProlog = true; _lineNumber = 1; - _encoding = OF_STRING_ENCODING_UTF_8; + _encoding = OFStringEncodingUTF8; _depthLimit = 32; objc_autoreleasePoolPop(pool); } @catch (id e) { [self release]; @@ -255,12 +256,12 @@ _lineNumber++; _lastCarriageReturn = (_data[_i] == '\r'); } - /* In OF_XMLPARSER_IN_TAG, there can be only spaces */ - if (length - _last > 0 && _state != OF_XMLPARSER_IN_TAG) + /* In OFXMLParserStateInTag, there can be only spaces */ + if (length - _last > 0 && _state != OFXMLParserStateInTag) appendToBuffer(_buffer, _data + _last, _encoding, length - _last); } - (void)parseString: (OFString *)string @@ -269,38 +270,38 @@ } - (void)parseStream: (OFStream *)stream { size_t pageSize = [OFSystemInfo pageSize]; - char *buffer = of_alloc(1, pageSize); + char *buffer = OFAllocMemory(1, pageSize); @try { while (!stream.atEndOfStream) { size_t length = [stream readIntoBuffer: buffer length: pageSize]; [self parseBuffer: buffer length: length]; } } @finally { - free(buffer); + OFFreeMemory(buffer); } } static void inByteOrderMarkState(OFXMLParser *self) { if (self->_data[self->_i] != "\xEF\xBB\xBF"[self->_level]) { if (self->_level == 0) { - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; self->_i--; return; } @throw [OFMalformedXMLException exceptionWithParser: self]; } if (self->_level++ == 2) - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; self->_last = self->_i + 1; } /* Not in a tag */ @@ -336,11 +337,11 @@ } [self->_buffer removeAllItems]; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_TAG_OPENED; + self->_state = OFXMLParserStateTagOpened; } /* Tag was just opened */ static void tagOpenedState(OFXMLParser *self) @@ -350,29 +351,29 @@ @throw [OFMalformedXMLException exceptionWithParser: self]; switch (self->_data[self->_i]) { case '?': self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_IN_PROCESSING_INSTRUCTION; + self->_state = OFXMLParserStateInProcessingInstruction; self->_level = 0; break; case '/': self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_IN_CLOSE_TAG_NAME; + self->_state = OFXMLParserStateInCloseTagName; self->_acceptProlog = false; break; case '!': self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_IN_EXCLAMATION_MARK; + self->_state = OFXMLParserStateInExclamationMark; self->_acceptProlog = false; break; default: if (self->_depthLimit > 0 && self->_previous.count >= self->_depthLimit) @throw [OFOutOfRangeException exception]; - self->_state = OF_XMLPARSER_IN_TAG_NAME; + self->_state = OFXMLParserStateInTagName; self->_acceptProlog = false; self->_i--; break; } } @@ -448,11 +449,11 @@ } if ([attribute isEqual: @"encoding"]) { @try { self->_encoding = - of_string_parse_encoding(value); + OFStringEncodingParseName(value); } @catch (OFInvalidArgumentException *e) { @throw [OFInvalidEncodingException exception]; } } @@ -487,21 +488,21 @@ PI = transformString(self, self->_buffer, 1, false); whitespaceCS = [OFCharacterSet characterSetWithCharactersInString: @" \r\n\r"]; pos = [PI indexOfCharacterFromSet: whitespaceCS]; - if (pos != OF_NOT_FOUND) { + if (pos != OFNotFound) { target = [PI substringToIndex: pos]; data = [[PI substringFromIndex: pos + 1] stringByDeletingEnclosingWhitespaces]; if (data.length == 0) data = nil; } else target = PI; - if ([target caseInsensitiveCompare: @"xml"] == OF_ORDERED_SAME) + if ([target caseInsensitiveCompare: @"xml"] == OFOrderedSame) if (!parseXMLProcessingInstruction(self, data)) @throw [OFMalformedXMLException exceptionWithParser: self]; if ([self->_delegate respondsToSelector: @selector( @@ -513,11 +514,11 @@ objc_autoreleasePoolPop(pool); [self->_buffer removeAllItems]; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; } else self->_level = 0; } /* Inside a tag, no name yet */ @@ -591,14 +592,14 @@ [self->_name release]; [self->_prefix release]; self->_name = self->_prefix = nil; self->_state = (self->_data[self->_i] == '/' - ? OF_XMLPARSER_EXPECT_TAG_CLOSE - : OF_XMLPARSER_OUTSIDE_TAG); + ? OFXMLParserStateExpectTagClose + : OFXMLParserStateOutsideTag); } else - self->_state = OF_XMLPARSER_IN_TAG; + self->_state = OFXMLParserStateInTag; if (self->_data[self->_i] != '/') [self->_namespaces addObject: [OFMutableDictionary dictionary]]; objc_autoreleasePoolPop(pool); @@ -672,12 +673,12 @@ [self->_prefix release]; self->_name = self->_prefix = nil; self->_last = self->_i + 1; self->_state = (self->_data[self->_i] == '>' - ? OF_XMLPARSER_OUTSIDE_TAG - : OF_XMLPARSER_EXPECT_SPACE_OR_TAG_CLOSE); + ? OFXMLParserStateOutsideTag + : OFXMLParserStateExpectSpaceOrTagClose); if (self->_previous.count == 0) self->_finishedParsing = true; } @@ -694,11 +695,11 @@ if (self->_data[self->_i] != ' ' && self->_data[self->_i] != '\t' && self->_data[self->_i] != '\n' && self->_data[self->_i] != '\r') { self->_last = self->_i; - self->_state = OF_XMLPARSER_IN_ATTRIBUTE_NAME; + self->_state = OFXMLParserStateInAttributeName; self->_i--; } return; } @@ -753,12 +754,11 @@ [self->_attributes removeAllObjects]; self->_name = self->_prefix = nil; self->_last = self->_i + 1; self->_state = (self->_data[self->_i] == '/' - ? OF_XMLPARSER_EXPECT_TAG_CLOSE - : OF_XMLPARSER_OUTSIDE_TAG); + ? OFXMLParserStateExpectTagClose : OFXMLParserStateOutsideTag); } /* Looking for attribute name */ static void inAttributeNameState(OFXMLParser *self) @@ -802,21 +802,21 @@ [self->_buffer removeAllItems]; self->_last = self->_i + 1; self->_state = (self->_data[self->_i] == '=' - ? OF_XMLPARSER_EXPECT_ATTRIBUTE_DELIMITER - : OF_XMLPARSER_EXPECT_ATTRIBUTE_EQUAL_SIGN); + ? OFXMLParserStateExpectAttributeDelimiter + : OFXMLParserStateExpectAttributeEqualSign); } /* Expecting equal sign of an attribute */ static void expectAttributeEqualSignState(OFXMLParser *self) { if (self->_data[self->_i] == '=') { self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_EXPECT_ATTRIBUTE_DELIMITER; + self->_state = OFXMLParserStateExpectAttributeDelimiter; return; } if (self->_data[self->_i] != ' ' && self->_data[self->_i] != '\t' && self->_data[self->_i] != '\n' && self->_data[self->_i] != '\r') @@ -835,11 +835,11 @@ if (self->_data[self->_i] != '\'' && self->_data[self->_i] != '"') @throw [OFMalformedXMLException exceptionWithParser: self]; self->_delimiter = self->_data[self->_i]; - self->_state = OF_XMLPARSER_IN_ATTRIBUTE_VALUE; + self->_state = OFXMLParserStateInAttributeValue; } /* Looking for attribute value */ static void inAttributeValueState(OFXMLParser *self) @@ -879,20 +879,20 @@ [self->_attributeName release]; [self->_attributePrefix release]; self->_attributeName = self->_attributePrefix = nil; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_IN_TAG; + self->_state = OFXMLParserStateInTag; } /* Expecting closing '>' */ static void expectTagCloseState(OFXMLParser *self) { if (self->_data[self->_i] == '>') { self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; } else @throw [OFMalformedXMLException exceptionWithParser: self]; } /* Expecting closing '>' or space */ @@ -899,11 +899,11 @@ static void expectSpaceOrTagCloseState(OFXMLParser *self) { if (self->_data[self->_i] == '>') { self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; } else if (self->_data[self->_i] != ' ' && self->_data[self->_i] != '\t' && self->_data[self->_i] != '\n' && self->_data[self->_i] != '\r') @throw [OFMalformedXMLException exceptionWithParser: self]; } @@ -914,16 +914,16 @@ { if (self->_finishedParsing && self->_data[self->_i] != '-') @throw [OFMalformedXMLException exceptionWithParser: self]; if (self->_data[self->_i] == '-') - self->_state = OF_XMLPARSER_IN_COMMENT_OPENING; + self->_state = OFXMLParserStateInCommentOpening; else if (self->_data[self->_i] == '[') { - self->_state = OF_XMLPARSER_IN_CDATA_OPENING; + self->_state = OFXMLParserStateInCDATAOpening; self->_level = 0; } else if (self->_data[self->_i] == 'D') { - self->_state = OF_XMLPARSER_IN_DOCTYPE; + self->_state = OFXMLParserStateInDOCTYPE; self->_level = 0; } else @throw [OFMalformedXMLException exceptionWithParser: self]; self->_last = self->_i + 1; @@ -935,11 +935,11 @@ { if (self->_data[self->_i] != "CDATA["[self->_level]) @throw [OFMalformedXMLException exceptionWithParser: self]; if (++self->_level == 6) { - self->_state = OF_XMLPARSER_IN_CDATA; + self->_state = OFXMLParserStateInCDATA; self->_level = 0; } self->_last = self->_i + 1; } @@ -964,11 +964,11 @@ objc_autoreleasePoolPop(pool); [self->_buffer removeAllItems]; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; } else self->_level = 0; } /* Comment */ @@ -977,11 +977,11 @@ { if (self->_data[self->_i] != '-') @throw [OFMalformedXMLException exceptionWithParser: self]; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_IN_COMMENT_1; + self->_state = OFXMLParserStateInComment1; self->_level = 0; } static void inCommentState1(OFXMLParser *self) @@ -990,11 +990,11 @@ self->_level++; else self->_level = 0; if (self->_level == 2) - self->_state = OF_XMLPARSER_IN_COMMENT_2; + self->_state = OFXMLParserStateInComment2; } static void inCommentState2(OFXMLParser *self) { @@ -1017,11 +1017,11 @@ objc_autoreleasePoolPop(pool); [self->_buffer removeAllItems]; self->_last = self->_i + 1; - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; } /* In */ static void inDOCTYPEState(OFXMLParser *self) @@ -1034,11 +1034,11 @@ @throw [OFMalformedXMLException exceptionWithParser: self]; self->_level++; if (self->_level > 6 && self->_data[self->_i] == '>') - self->_state = OF_XMLPARSER_OUTSIDE_TAG; + self->_state = OFXMLParserStateOutsideTag; self->_last = self->_i + 1; } - (size_t)lineNumber