view dstep/foundation/NSXMLParser.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents 89f3c3ef1fd2
children b9de51448c6b
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Aug 3, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.foundation.NSXMLParser;

import dstep.foundation.NSData;
import dstep.foundation.NSDictionary;
import dstep.foundation.NSError;
import dstep.foundation.NSObjCRuntime;
import dstep.foundation.NSObject;
import dstep.foundation.NSString;
import dstep.foundation.NSURL;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;



import bindings = dstep.foundation.NSXMLParser_bindings;

alias NSInteger NSXMLParserError;

private NSString NSXMLParserErrorDomain_;

NSString NSXMLParserErrorDomain ()
{
	if (NSXMLParserErrorDomain_)
		return NSXMLParserErrorDomain_;
	
	return NSXMLParserErrorDomain_ = new NSString(bindings.NSXMLParserErrorDomain);
}

enum
{
	NSXMLParserInternalError = 1,
	NSXMLParserOutOfMemoryError = 2,
	NSXMLParserDocumentStartError = 3,
	NSXMLParserEmptyDocumentError = 4,
	NSXMLParserPrematureDocumentEndError = 5,
	NSXMLParserInvalidHexCharacterRefError = 6,
	NSXMLParserInvalidDecimalCharacterRefError = 7,
	NSXMLParserInvalidCharacterRefError = 8,
	NSXMLParserInvalidCharacterError = 9,
	NSXMLParserCharacterRefAtEOFError = 10,
	NSXMLParserCharacterRefInPrologError = 11,
	NSXMLParserCharacterRefInEpilogError = 12,
	NSXMLParserCharacterRefInDTDError = 13,
	NSXMLParserEntityRefAtEOFError = 14,
	NSXMLParserEntityRefInPrologError = 15,
	NSXMLParserEntityRefInEpilogError = 16,
	NSXMLParserEntityRefInDTDError = 17,
	NSXMLParserParsedEntityRefAtEOFError = 18,
	NSXMLParserParsedEntityRefInPrologError = 19,
	NSXMLParserParsedEntityRefInEpilogError = 20,
	NSXMLParserParsedEntityRefInInternalSubsetError = 21,
	NSXMLParserEntityReferenceWithoutNameError = 22,
	NSXMLParserEntityReferenceMissingSemiError = 23,
	NSXMLParserParsedEntityRefNoNameError = 24,
	NSXMLParserParsedEntityRefMissingSemiError = 25,
	NSXMLParserUndeclaredEntityError = 26,
	NSXMLParserUnparsedEntityError = 28,
	NSXMLParserEntityIsExternalError = 29,
	NSXMLParserEntityIsParameterError = 30,
	NSXMLParserUnknownEncodingError = 31,
	NSXMLParserEncodingNotSupportedError = 32,
	NSXMLParserStringNotStartedError = 33,
	NSXMLParserStringNotClosedError = 34,
	NSXMLParserNamespaceDeclarationError = 35,
	NSXMLParserEntityNotStartedError = 36,
	NSXMLParserEntityNotFinishedError = 37,
	NSXMLParserLessThanSymbolInAttributeError = 38,
	NSXMLParserAttributeNotStartedError = 39,
	NSXMLParserAttributeNotFinishedError = 40,
	NSXMLParserAttributeHasNoValueError = 41,
	NSXMLParserAttributeRedefinedError = 42,
	NSXMLParserLiteralNotStartedError = 43,
	NSXMLParserLiteralNotFinishedError = 44,
	NSXMLParserCommentNotFinishedError = 45,
	NSXMLParserProcessingInstructionNotStartedError = 46,
	NSXMLParserProcessingInstructionNotFinishedError = 47,
	NSXMLParserNotationNotStartedError = 48,
	NSXMLParserNotationNotFinishedError = 49,
	NSXMLParserAttributeListNotStartedError = 50,
	NSXMLParserAttributeListNotFinishedError = 51,
	NSXMLParserMixedContentDeclNotStartedError = 52,
	NSXMLParserMixedContentDeclNotFinishedError = 53,
	NSXMLParserElementContentDeclNotStartedError = 54,
	NSXMLParserElementContentDeclNotFinishedError = 55,
	NSXMLParserXMLDeclNotStartedError = 56,
	NSXMLParserXMLDeclNotFinishedError = 57,
	NSXMLParserConditionalSectionNotStartedError = 58,
	NSXMLParserConditionalSectionNotFinishedError = 59,
	NSXMLParserExternalSubsetNotFinishedError = 60,
	NSXMLParserDOCTYPEDeclNotFinishedError = 61,
	NSXMLParserMisplacedCDATAEndStringError = 62,
	NSXMLParserCDATANotFinishedError = 63,
	NSXMLParserMisplacedXMLDeclarationError = 64,
	NSXMLParserSpaceRequiredError = 65,
	NSXMLParserSeparatorRequiredError = 66,
	NSXMLParserNMTOKENRequiredError = 67,
	NSXMLParserNAMERequiredError = 68,
	NSXMLParserPCDATARequiredError = 69,
	NSXMLParserURIRequiredError = 70,
	NSXMLParserPublicIdentifierRequiredError = 71,
	NSXMLParserLTRequiredError = 72,
	NSXMLParserGTRequiredError = 73,
	NSXMLParserLTSlashRequiredError = 74,
	NSXMLParserEqualExpectedError = 75,
	NSXMLParserTagNameMismatchError = 76,
	NSXMLParserUnfinishedTagError = 77,
	NSXMLParserStandaloneValueError = 78,
	NSXMLParserInvalidEncodingNameError = 79,
	NSXMLParserCommentContainsDoubleHyphenError = 80,
	NSXMLParserInvalidEncodingError = 81,
	NSXMLParserExternalStandaloneEntityError = 82,
	NSXMLParserInvalidConditionalSectionError = 83,
	NSXMLParserEntityValueRequiredError = 84,
	NSXMLParserNotWellBalancedError = 85,
	NSXMLParserExtraContentError = 86,
	NSXMLParserInvalidCharacterInEntityError = 87,
	NSXMLParserParsedEntityRefInInternalError = 88,
	NSXMLParserEntityRefLoopError = 89,
	NSXMLParserEntityBoundaryError = 90,
	NSXMLParserInvalidURIError = 91,
	NSXMLParserURIFragmentError = 92,
	NSXMLParserNoDTDError = 94,
	NSXMLParserDelegateAbortedParseError = 512
}

const TNSXMLParserDelegateEventAdditions = `

	void parserDidStartDocument (NSXMLParser parser)
	{
		return invokeObjcSelf!(void, "parserDidStartDocument:", NSXMLParser)(parser);
	}
	
	void parserDidEndDocument (NSXMLParser parser)
	{
		return invokeObjcSelf!(void, "parserDidEndDocument:", NSXMLParser)(parser);
	}
	
	void parser (NSXMLParser parser, NSString name, NSString publicID, NSString systemID)
	{
		return invokeObjcSelf!(void, "parser:foundNotationDeclarationWithName:publicID:systemID:", NSXMLParser, NSString, NSString, NSString)(parser, name, publicID, systemID);
	}
	
	void parser (NSXMLParser parser, NSString name, NSString publicID, NSString systemID, NSString notationName)
	{
		return invokeObjcSelf!(void, "parser:foundUnparsedEntityDeclarationWithName:publicID:systemID:notationName:", NSXMLParser, NSString, NSString, NSString, NSString)(parser, name, publicID, systemID, notationName);
	}
	
	void parser_foundAttributeDeclarationWithName_forElement_type_defaultValue (NSXMLParser parser, NSString attributeName, NSString elementName, NSString type, NSString defaultValue)
	{
		return invokeObjcSelf!(void, "parser:foundAttributeDeclarationWithName:forElement:type:defaultValue:", NSXMLParser, NSString, NSString, NSString, NSString)(parser, attributeName, elementName, type, defaultValue);
	}
	
	void parser (NSXMLParser parser, NSString elementName, NSString model)
	{
		return invokeObjcSelf!(void, "parser:foundElementDeclarationWithName:model:", NSXMLParser, NSString, NSString)(parser, elementName, model);
	}
	
	void parser_foundInternalEntityDeclarationWithName_value (NSXMLParser parser, NSString name, NSString value)
	{
		return invokeObjcSelf!(void, "parser:foundInternalEntityDeclarationWithName:value:", NSXMLParser, NSString, NSString)(parser, name, value);
	}
	
	void parser_foundExternalEntityDeclarationWithName_publicID_systemID (NSXMLParser parser, NSString name, NSString publicID, NSString systemID)
	{
		return invokeObjcSelf!(void, "parser:foundExternalEntityDeclarationWithName:publicID:systemID:", NSXMLParser, NSString, NSString, NSString)(parser, name, publicID, systemID);
	}
	
	void parser (NSXMLParser parser, NSString elementName, NSString namespaceURI, NSString qName, NSDictionary attributeDict)
	{
		return invokeObjcSelf!(void, "parser:didStartElement:namespaceURI:qualifiedName:attributes:", NSXMLParser, NSString, NSString, NSString, NSDictionary)(parser, elementName, namespaceURI, qName, attributeDict);
	}
	
	void parser_didEndElement_namespaceURI_qualifiedName (NSXMLParser parser, NSString elementName, NSString namespaceURI, NSString qName)
	{
		return invokeObjcSelf!(void, "parser:didEndElement:namespaceURI:qualifiedName:", NSXMLParser, NSString, NSString, NSString)(parser, elementName, namespaceURI, qName);
	}
	
	void parser_didStartMappingPrefix_toURI (NSXMLParser parser, NSString prefix, NSString namespaceURI)
	{
		return invokeObjcSelf!(void, "parser:didStartMappingPrefix:toURI:", NSXMLParser, NSString, NSString)(parser, prefix, namespaceURI);
	}
	
	void parser (NSXMLParser parser, NSString prefix)
	{
		return invokeObjcSelf!(void, "parser:didEndMappingPrefix:", NSXMLParser, NSString)(parser, prefix);
	}
	
	void parser (NSXMLParser parser, NSString string)
	{
		return invokeObjcSelf!(void, "parser:foundCharacters:", NSXMLParser, NSString)(parser, string);
	}
	
	void parser (NSXMLParser parser, NSString whitespaceString)
	{
		return invokeObjcSelf!(void, "parser:foundIgnorableWhitespace:", NSXMLParser, NSString)(parser, whitespaceString);
	}
	
	void parser_foundProcessingInstructionWithTarget_data (NSXMLParser parser, NSString target, NSString data)
	{
		return invokeObjcSelf!(void, "parser:foundProcessingInstructionWithTarget:data", NSXMLParser, NSString, NSString)(parser, target, data);
	}
	
	void parser (NSXMLParser parser, NSString comment)
	{
		return invokeObjcSelf!(void, "parser:foundComment:", NSXMLParser, NSString)(parser, comment);
	}
	
	void parser (NSXMLParser parser, NSData CDATABlock)
	{
		return invokeObjcSelf!(void, "parser:foundCDATA:", NSXMLParser, NSData)(parser, CDATABlock);
	}
	
	NSData parser_resolveExternalEntityName_systemID (NSXMLParser parser, NSString name, NSString systemID)
	{
		return invokeObjcSelf!(NSData, "parser:resolveExternalEntityName:systemID:", NSXMLParser, NSString, NSString)(parser, name, systemID);
	}
	
	void parser (NSXMLParser parser, NSError parseError)
	{
		return invokeObjcSelf!(void, "parser:parseErrorOccurred:", NSXMLParser, NSError)(parser, parseError);
	}
	
	void parser_validationErrorOccurred (NSXMLParser parser, NSError validationError)
	{
		return invokeObjcSelf!(void, "parser:validationErrorOccurred:", NSXMLParser, NSError)(parser, validationError);
	}
	
	//mixin ObjcBindMethod!(parserDidStartDocument, "parserDidStartDocument:");
	//mixin ObjcBindMethod!(parserDidEndDocument, "parserDidEndDocument:");
	//mixin ObjcBindMethod!(parser, "parser:foundNotationDeclarationWithName:publicID:systemID:");
	//mixin ObjcBindMethod!(parser, "parser:foundUnparsedEntityDeclarationWithName:publicID:systemID:notationName:");
	//mixin ObjcBindMethod!(parser_foundAttributeDeclarationWithName_forElement_type_defaultValue, "parser:foundAttributeDeclarationWithName:forElement:type:defaultValue:");
	//mixin ObjcBindMethod!(parser, "parser:foundElementDeclarationWithName:model:");
	//mixin ObjcBindMethod!(parser_foundInternalEntityDeclarationWithName_value, "parser:foundInternalEntityDeclarationWithName:value:");
	//mixin ObjcBindMethod!(parser_foundExternalEntityDeclarationWithName_publicID_systemID, "parser:foundExternalEntityDeclarationWithName:publicID:systemID:");
	//mixin ObjcBindMethod!(parser, "parser:didStartElement:namespaceURI:qualifiedName:attributes:");
	//mixin ObjcBindMethod!(parser_didEndElement_namespaceURI_qualifiedName, "parser:didEndElement:namespaceURI:qualifiedName:");
	//mixin ObjcBindMethod!(parser_didStartMappingPrefix_toURI, "parser:didStartMappingPrefix:toURI:");
	//mixin ObjcBindMethod!(parser, "parser:didEndMappingPrefix:");
	//mixin ObjcBindMethod!(parser, "parser:foundCharacters:");
	//mixin ObjcBindMethod!(parser, "parser:foundIgnorableWhitespace:");
	//mixin ObjcBindMethod!(parser_foundProcessingInstructionWithTarget_data, "parser:foundProcessingInstructionWithTarget:data");
	//mixin ObjcBindMethod!(parser, "parser:foundComment:");
	//mixin ObjcBindMethod!(parser, "parser:foundCDATA:");
	//mixin ObjcBindMethod!(parser_resolveExternalEntityName_systemID, "parser:resolveExternalEntityName:systemID:");
	//mixin ObjcBindMethod!(parser, "parser:parseErrorOccurred:");
	//mixin ObjcBindMethod!(parser, "parser:validationErrorOccurred:");
`;

const TNSXMLParserLocatorAdditions = `

	NSString publicID ()
	{
		return invokeObjcSelf!(NSString, "publicID");
	}

	NSString systemID ()
	{
		return invokeObjcSelf!(NSString, "systemID");
	}

	NSInteger lineNumber ()
	{
		return invokeObjcSelf!(NSInteger, "lineNumber");
	}

	NSInteger columnNumber ()
	{
		return invokeObjcSelf!(NSInteger, "columnNumber");
	}
`;

class NSXMLParser : NSObject
{
	mixin (ObjcWrap);
	
	this ()
	{
		super(typeof(this).alloc.init.objcObject);
	}
	
	typeof(this) init ()
	{
		return invokeObjcSelf!(typeof(this), "init");
	}

	Object initWithContentsOfURL (NSURL url)
	{
		return invokeObjcSelf!(Object, "initWithContentsOfURL:", NSURL)(url);
	}

	this (NSURL url)
	{
		typeof(this).alloc.initWithContentsOfURL(url);
	}

	Object initWithData (NSData data)
	{
		return invokeObjcSelf!(Object, "initWithData:", NSData)(data);
	}

	this (NSData data)
	{
		typeof(this).alloc.initWithData(data);
	}

	Object delegate_ ()
	{
		return invokeObjcSelf!(Object, "delegate");
	}

	void setDelegate (Object delegate_)
	{
		return invokeObjcSelf!(void, "setDelegate:", Object)(delegate_);
	}

	void setShouldProcessNamespaces (bool shouldProcessNamespaces)
	{
		return invokeObjcSelf!(void, "setShouldProcessNamespaces:", bool)(shouldProcessNamespaces);
	}

	void setShouldReportNamespacePrefixes (bool shouldReportNamespacePrefixes)
	{
		return invokeObjcSelf!(void, "setShouldReportNamespacePrefixes:", bool)(shouldReportNamespacePrefixes);
	}

	void setShouldResolveExternalEntities (bool shouldResolveExternalEntities)
	{
		return invokeObjcSelf!(void, "setShouldResolveExternalEntities:", bool)(shouldResolveExternalEntities);
	}

	bool shouldProcessNamespaces ()
	{
		return invokeObjcSelf!(bool, "shouldProcessNamespaces");
	}

	bool shouldReportNamespacePrefixes ()
	{
		return invokeObjcSelf!(bool, "shouldReportNamespacePrefixes");
	}

	bool shouldResolveExternalEntities ()
	{
		return invokeObjcSelf!(bool, "shouldResolveExternalEntities");
	}

	bool parse ()
	{
		return invokeObjcSelf!(bool, "parse");
	}

	void abortParsing ()
	{
		return invokeObjcSelf!(void, "abortParsing");
	}

	NSError parserError ()
	{
		return invokeObjcSelf!(NSError, "parserError");
	}
	
	// TNSXMLParserLocatorAdditions
	NSString publicID ()
	{
		return invokeObjcSelf!(NSString, "publicID");
	}
	
	NSString systemID ()
	{
		return invokeObjcSelf!(NSString, "systemID");
	}
	
	NSInteger lineNumber ()
	{
		return invokeObjcSelf!(NSInteger, "lineNumber");
	}
	
	NSInteger columnNumber ()
	{
		return invokeObjcSelf!(NSInteger, "columnNumber");
	}
}