Index: src/OFXMLParser.h ================================================================== --- src/OFXMLParser.h +++ src/OFXMLParser.h @@ -15,11 +15,11 @@ @class OFXMLParser; @class OFArray; @class OFMutableArray; -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) typedef void (^of_xml_parser_element_start_block_t)(OFXMLParser *parser, OFString *name, OFString *prefix, OFString *ns, OFArray *attrs); typedef void (^of_xml_parser_element_end_block_t)(OFXMLParser *parser, OFString *name, OFString *prefix, OFString *ns); typedef void (^of_xml_parser_string_block_t)(OFXMLParser *parser, @@ -142,11 +142,11 @@ OFMutableArray *attrs; OFString *attrName; OFString *attrPrefix; char delim; OFMutableArray *previous; -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) of_xml_parser_element_start_block_t elementStartHandler; of_xml_parser_element_end_block_t elementEndHandler; of_xml_parser_string_block_t charactersHandler; of_xml_parser_string_block_t CDATAHandler; of_xml_parser_string_block_t commentHandler; @@ -182,11 +182,11 @@ * * \param delegate The delegate to use */ - (void)setDelegate: (id )delegate; -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) /** * \return The element start handler */ - (of_xml_parser_element_start_block_t)elementStartHandler; Index: src/OFXMLParser.m ================================================================== --- src/OFXMLParser.m +++ src/OFXMLParser.m @@ -77,10 +77,15 @@ [attr->ns release]; attr->ns = [attr_ns retain]; } @implementation OFXMLParser +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) +@synthesize elementStartHandler, elementEndHandler, charactersHandler; +@synthesize CDATAHandler, commentHandler, unknownEntityHandler; +#endif + + (void)initialize { size_t i; const SEL sels[] = { @@ -157,11 +162,11 @@ [namespaces release]; [attrs release]; [attrName release]; [attrPrefix release]; [previous release]; -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) [elementStartHandler release]; [elementEndHandler release]; [charactersHandler release]; [CDATAHandler release]; [commentHandler release]; @@ -181,84 +186,10 @@ [(id)delegate_ retain]; [(id)delegate release]; delegate = delegate_; } -#ifdef OF_HAVE_BLOCKS -- (of_xml_parser_element_start_block_t)elementStartHandler -{ - return [[elementStartHandler copy] autorelease]; -} - -- (void)setElementStartHandler: (of_xml_parser_element_start_block_t)block -{ - block = [block copy]; - [elementStartHandler release]; - elementStartHandler = block; -} - -- (of_xml_parser_element_end_block_t)elementEndHandler -{ - return [[elementEndHandler copy] autorelease]; -} - -- (void)setElementEndHandler: (of_xml_parser_element_end_block_t)block -{ - block = [block copy]; - [elementEndHandler release]; - elementEndHandler = block; -} - -- (of_xml_parser_string_block_t)charactersHandler -{ - return [[charactersHandler copy] autorelease]; -} - -- (void)setCharactersHandler: (of_xml_parser_string_block_t)block -{ - block = [block copy]; - [charactersHandler release]; - charactersHandler = block; -} - -- (of_xml_parser_string_block_t)CDATAHandler -{ - return [[CDATAHandler copy] autorelease]; -} - -- (void)setCDATAHandler: (of_xml_parser_string_block_t)block -{ - block = [block copy]; - [CDATAHandler release]; - CDATAHandler = block; -} - -- (of_xml_parser_string_block_t)commentHandler -{ - return [[commentHandler copy] autorelease]; -} - -- (void)setCommentHandler: (of_xml_parser_string_block_t)block -{ - block = [block copy]; - [commentHandler release]; - commentHandler = block; -} - -- (of_xml_parser_unknown_entity_block_t)unknownEntityHandler -{ - return [[unknownEntityHandler copy] autorelease]; -} - -- (void)setUnknownEntityHandler: (of_xml_parser_unknown_entity_block_t)block -{ - block = [block copy]; - [unknownEntityHandler release]; - unknownEntityHandler = block; -} -#endif - - (void)parseBuffer: (const char*)buf withSize: (size_t)size { size_t i, last = 0; @@ -327,11 +258,11 @@ OFAutoreleasePool *pool; pool = [[OFAutoreleasePool alloc] init]; str = transform_string(cache, self); -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) if (charactersHandler != NULL) charactersHandler(self, str); else #endif [delegate parser: self @@ -423,11 +354,11 @@ [OFUnboundNamespaceException newWithClass: isa prefix: prefix]; pool = [[OFAutoreleasePool alloc] init]; -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) if (elementStartHandler != NULL) elementStartHandler(self, name, prefix, ns, nil); else #endif [delegate parser: self @@ -435,11 +366,11 @@ withPrefix: prefix namespace: ns attributes: nil]; if (buf[*i] == '/') { -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) if (elementEndHandler != NULL) elementEndHandler(self, name, prefix, ns); else #endif [delegate parser: self @@ -516,11 +447,11 @@ @throw [OFUnboundNamespaceException newWithClass: isa prefix: prefix]; pool = [[OFAutoreleasePool alloc] init]; -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) if (elementEndHandler != NULL) elementEndHandler(self, name, prefix, ns); else #endif [delegate parser: self @@ -574,11 +505,11 @@ for (j = 0; j < attrs_cnt; j++) resolve_attr_namespace(attrs_c[j], prefix, ns, namespaces, isa); pool = [[OFAutoreleasePool alloc] init]; -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) if (elementStartHandler != NULL) elementStartHandler(self, name, prefix, ns, attrs); else #endif [delegate parser: self @@ -586,11 +517,11 @@ withPrefix: prefix namespace: ns attributes: attrs]; if (buf[*i] == '/') { -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) if (elementEndHandler != NULL) elementEndHandler(self, name, prefix, ns); else #endif [delegate parser: self @@ -810,11 +741,11 @@ len = [cdata length]; [cdata removeCharactersFromIndex: len - 2 toIndex: len]; -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) if (CDATAHandler != NULL) CDATAHandler(self, cdata); else #endif [delegate parser: self @@ -873,11 +804,11 @@ len = [comment length]; [comment removeCharactersFromIndex: len - 2 toIndex: len]; -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) if (commentHandler != NULL) commentHandler(self, comment); else #endif [delegate parser: self @@ -915,11 +846,11 @@ } - (OFString*)string: (OFString*)string containsUnknownEntityNamed: (OFString*)entity { -#ifdef OF_HAVE_BLOCKS +#if defined(OF_HAVE_PROPERTIES) && defined(OF_HAVE_BLOCKS) if (unknownEntityHandler != NULL) return unknownEntityHandler(self, entity); #endif return [delegate parser: self