diff --git a/htmlparser/src/nsExpatDTD.cpp b/htmlparser/src/nsExpatDTD.cpp index c52be44278e..fe160e0cf50 100644 --- a/htmlparser/src/nsExpatDTD.cpp +++ b/htmlparser/src/nsExpatDTD.cpp @@ -310,12 +310,12 @@ nsresult nsExpatDTD::Terminate(nsIParser* aParser) */ void nsExpatDTD::SetupExpatCallbacks(void) { if (mExpatParser) { - XML_SetElementHandler(mExpatParser, HandleStartElement, HandleEndElement); - XML_SetCharacterDataHandler(mExpatParser, HandleCharacterData); - XML_SetProcessingInstructionHandler(mExpatParser, HandleProcessingInstruction); + XML_SetElementHandler(mExpatParser, DTD_HandleStartElement, DTD_HandleEndElement); + XML_SetCharacterDataHandler(mExpatParser, DTD_HandleCharacterData); + XML_SetProcessingInstructionHandler(mExpatParser, DTD_HandleProcessingInstruction); // XML_SetDefaultHandler(mExpatParser, NULL); // XML_SetUnparsedEntityDeclHandler(mExpatParser, NULL); - XML_SetNotationDeclHandler(mExpatParser, HandleNotationDecl); + XML_SetNotationDeclHandler(mExpatParser, DTD_HandleNotationDecl); // XML_SetExternalEntityRefHandler(mExpatParser, NULL); // XML_SetUnknownEncodingHandler(mExpatParser, NULL, NULL); } @@ -536,64 +536,64 @@ nsresult nsExpatDTD::ParseXMLBuffer(const char *buffer){ /* Expat Callback Functions start here */ /***************************************/ -void nsExpatDTD::HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts) +void DTD_HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleStartElement() not yet implemented."); } -void nsExpatDTD::HandleEndElement(void *userData, const XML_Char *name) +void DTD_HandleEndElement(void *userData, const XML_Char *name) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleEndElement() not yet implemented."); } -void nsExpatDTD::HandleCharacterData(void *userData, const XML_Char *s, int len) +void DTD_HandleCharacterData(void *userData, const XML_Char *s, int len) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleCharacterData() not yet implemented."); } -void nsExpatDTD::HandleProcessingInstruction(void *userData, - const XML_Char *target, - const XML_Char *data) +void DTD_HandleProcessingInstruction(void *userData, + const XML_Char *target, + const XML_Char *data) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleProcessingInstruction() not yet implemented."); } -void nsExpatDTD::HandleDefault(void *userData, const XML_Char *s, int len) +void DTD_HandleDefault(void *userData, const XML_Char *s, int len) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleDefault() not yet implemented."); } -void nsExpatDTD::HandleUnparsedEntityDecl(void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName) +void DTD_HandleUnparsedEntityDecl(void *userData, + const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleUnparsedEntityDecl() not yet implemented."); } -void nsExpatDTD::HandleNotationDecl(void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) +void DTD_HandleNotationDecl(void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleNotationDecl() not yet implemented."); } -void nsExpatDTD::HandleExternalEntityRef(XML_Parser parser, - const XML_Char *openEntityNames, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) +void DTD_HandleExternalEntityRef(XML_Parser parser, + const XML_Char *openEntityNames, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleExternalEntityRef() not yet implemented."); } -void nsExpatDTD::HandleUnknownEncoding(void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info) +void DTD_HandleUnknownEncoding(void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleUnknownEncoding() not yet implemented."); } diff --git a/htmlparser/src/nsExpatDTD.h b/htmlparser/src/nsExpatDTD.h index cd2a39a417b..e69de29bb2d 100644 --- a/htmlparser/src/nsExpatDTD.h +++ b/htmlparser/src/nsExpatDTD.h @@ -1,297 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - * This Original Code has been modified by IBM Corporation. Modifications made by IBM - * described herein are Copyright (c) International Business Machines Corporation, 2000. - * Modifications to Mozilla code or documentation identified per MPL Section 3.3 - * - * Date Modified by Description of modification - * 04/20/2000 IBM Corp. OS/2 VisualAge build. - */ - -/** - * MODULE NOTES: - * @update gess 4/8/98 - * - * - */ - -#ifndef __NS_EXPAT_DTD -#define __NS_EXPAT_DTD - -#include "nsIDTD.h" -#include "nsITokenizer.h" -#include "nsISupports.h" -#include "nsHTMLTokens.h" -#include "nshtmlpars.h" -#include "nsVoidArray.h" -#include "nsDeque.h" -#include "nsIContentSink.h" -#include "xmlparse.h" - - -#define NS_EXPAT_DTD_IID \ - {0x5ad4b431, 0xcabb, 0x11d2, \ - {0xab, 0xcb, 0x0, 0x10, 0x4b, 0x98, 0x3f, 0xd4}} - - -class nsIDTDDebug; -class nsIParserNode; -class nsParser; - - - -class nsExpatDTD : public nsIDTD { - - public: - - NS_DECL_ISUPPORTS - - - /** - * - * - * @update gess 4/9/98 - * @param - * @return - */ - nsExpatDTD(); - - /** - * - * - * @update gess 4/9/98 - * @param - * @return - */ - virtual ~nsExpatDTD(); - - virtual const nsIID& GetMostDerivedIID(void) const; - - /** - * Call this method if you want the DTD to construct a clone of itself. - * @update gess7/23/98 - * @param - * @return - */ - virtual nsresult CreateNewInstance(nsIDTD** aInstancePtrResult); - - /** - * This method is called to determine if the given DTD can parse - * a document in a given source-type. - * NOTE: Parsing always assumes that the end result will involve - * storing the result in the main content model. - * @update gess6/24/98 - * @param - * @return TRUE if this DTD can satisfy the request; FALSE otherwise. - */ - virtual eAutoDetectResult CanParse(CParserContext& aParserContext,nsString& aBuffer, PRInt32 aVersion); - - /** - * The parser uses a code sandwich to wrap the parsing process. Before - * the process begins, WillBuildModel() is called. Afterwards the parser - * calls DidBuildModel(). - * @update rickg 03.20.2000 - * @param aParserContext - * @param aSink - * @return error code (almost always 0) - */ - NS_IMETHOD WillBuildModel( const CParserContext& aParserContext,nsIContentSink* aSink); - - - /** - * The parser uses a code sandwich to wrap the parsing process. Before - * the process begins, WillBuildModel() is called. Afterwards the parser - * calls DidBuildModel(). - * @update gess5/18/98 - * @param aFilename is the name of the file being parsed. - * @return error code (almost always 0) - */ - NS_IMETHOD BuildModel(nsIParser* aParser,nsITokenizer* aTokenizer,nsITokenObserver* anObserver=0,nsIContentSink* aSink=0); - - /** - * The parser uses a code sandwich to wrap the parsing process. Before - * the process begins, WillBuildModel() is called. Afterwards the parser - * calls DidBuildModel(). - * @update gess5/18/98 - * @param anErrorCode contans the last error that occured - * @return error code - */ - NS_IMETHOD DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParser* aParser,nsIContentSink* aSink=0); - - /** - * - * @update gess 3/25/98 - * @param aToken -- token object to be put into content model - * @return 0 if all is well; non-zero is an error - */ - NS_IMETHOD HandleToken(CToken* aToken,nsIParser* aParser); - - /** - * - * @update gess12/28/98 - * @param - * @return - */ - NS_IMETHOD GetTokenizer(nsITokenizer*& aTokenizer); - - /** - * - * @update gess5/18/98 - * @param - * @return - */ - NS_IMETHOD WillResumeParse(void); - - /** - * - * @update gess5/18/98 - * @param - * @return - */ - NS_IMETHOD WillInterruptParse(void); - - /** - * Called by the parser to initiate dtd verification of the - * internal context stack. - * @update gess 7/23/98 - * @param - * @return - */ - virtual PRBool Verify(nsString& aURLRef,nsIParser* aParser); - - /** - * Set this to TRUE if you want the DTD to verify its - * context stack. - * @update gess 7/23/98 - * @param - * @return - */ - virtual void SetVerification(PRBool aEnable); - - /** - * This method is called to determine whether or not a tag - * of one type can contain a tag of another type. - * - * @update gess 3/25/98 - * @param aParent -- int tag of parent container - * @param aChild -- int tag of child container - * @return PR_TRUE if parent can contain child - */ - virtual PRBool CanContain(PRInt32 aParent,PRInt32 aChild) const; - - /** - * This method gets called to determine whether a given - * tag is itself a container - * - * @update gess 3/25/98 - * @param aTag -- tag to test for containership - * @return PR_TRUE if given tag can contain other tags - */ - virtual PRBool IsContainer(PRInt32 aTag) const; - - /** - * Use this id you want to stop the building content model - * --------------[ Sets DTD to STOP mode ]---------------- - * It's recommended to use this method in accordance with - * the parser's terminate() method. - * - * @update harishd 07/22/99 - * @param - * @return - */ - virtual nsresult Terminate(nsIParser* aParser=nsnull); - - /** - * Give rest of world access to our tag enums, so that CanContain(), etc, - * become useful. - */ - NS_IMETHOD StringTagToIntTag(nsString &aTag, PRInt32* aIntTag) const; - - NS_IMETHOD IntTagToStringTag(PRInt32 aIntTag, nsString& aTag) const; - - NS_IMETHOD ConvertEntityToUnicode(const nsString& aEntity, PRInt32* aUnicode) const; - - virtual PRBool IsBlockElement(PRInt32 aTagID,PRInt32 aParentID) const {return PR_FALSE;} - virtual PRBool IsInlineElement(PRInt32 aTagID,PRInt32 aParentID) const {return PR_FALSE;} - - /** - * Retrieve a ptr to the global token recycler... - * @update gess8/4/98 - * @return ptr to recycler (or null) - */ - virtual nsTokenAllocator* GetTokenAllocator(void); - - /** - * Parse an XML buffer using expat - * @update nra 2/29/99 - * @return NS_ERROR_FAILURE if expat encounters an error, else NS_OK - */ - nsresult ParseXMLBuffer(const char *buffer); - -protected: - /** - * Sets up the callbacks for the expat parser - * @update nra 2/24/99 - * @param none - * @return none - */ - void SetupExpatCallbacks(void); - - /* The callback handlers that get called from the expat parser */ - static void PR_CALLBACK HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts); - static void PR_CALLBACK HandleEndElement(void *userData, const XML_Char *name); - static void PR_CALLBACK HandleCharacterData(void *userData, const XML_Char *s, int len); - static void PR_CALLBACK HandleProcessingInstruction(void *userData, - const XML_Char *target, - const XML_Char *data); - static void PR_CALLBACK HandleDefault(void *userData, const XML_Char *s, int len); - static void PR_CALLBACK HandleUnparsedEntityDecl(void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - static void PR_CALLBACK HandleNotationDecl(void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - static void PR_CALLBACK HandleExternalEntityRef(XML_Parser parser, - const XML_Char *openEntityNames, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - static void PR_CALLBACK HandleUnknownEncoding(void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info); - - XML_Parser mExpatParser; - nsParser* mParser; - nsIContentSink* mSink; - nsString mFilename; - PRInt32 mLineNumber; - nsITokenizer* mTokenizer; -}; - -extern NS_HTMLPARS nsresult NS_New_Expat_DTD(nsIDTD** aInstancePtrResult); - - -#endif diff --git a/htmlparser/src/nsExpatTokenizer.cpp b/htmlparser/src/nsExpatTokenizer.cpp index 21a3c6a2aee..02c491a2892 100644 --- a/htmlparser/src/nsExpatTokenizer.cpp +++ b/htmlparser/src/nsExpatTokenizer.cpp @@ -146,19 +146,19 @@ NS_IMPL_RELEASE(nsExpatTokenizer) void nsExpatTokenizer::SetupExpatParser(void) { if (mExpatParser) { // Set up the callbacks - XML_SetElementHandler(mExpatParser, HandleStartElement, HandleEndElement); - XML_SetCharacterDataHandler(mExpatParser, HandleCharacterData); - XML_SetProcessingInstructionHandler(mExpatParser, HandleProcessingInstruction); - XML_SetDefaultHandlerExpand(mExpatParser, HandleDefault); - XML_SetUnparsedEntityDeclHandler(mExpatParser, HandleUnparsedEntityDecl); - XML_SetNotationDeclHandler(mExpatParser, HandleNotationDecl); - XML_SetExternalEntityRefHandler(mExpatParser, HandleExternalEntityRef); - XML_SetCommentHandler(mExpatParser, HandleComment); - XML_SetUnknownEncodingHandler(mExpatParser, HandleUnknownEncoding, NULL); - XML_SetCdataSectionHandler(mExpatParser, HandleStartCdataSection, - HandleEndCdataSection); + XML_SetElementHandler(mExpatParser, Tokenizer_HandleStartElement, Tokenizer_HandleEndElement); + XML_SetCharacterDataHandler(mExpatParser, Tokenizer_HandleCharacterData); + XML_SetProcessingInstructionHandler(mExpatParser, Tokenizer_HandleProcessingInstruction); + XML_SetDefaultHandlerExpand(mExpatParser, Tokenizer_HandleDefault); + XML_SetUnparsedEntityDeclHandler(mExpatParser, Tokenizer_HandleUnparsedEntityDecl); + XML_SetNotationDeclHandler(mExpatParser, Tokenizer_HandleNotationDecl); + XML_SetExternalEntityRefHandler(mExpatParser, Tokenizer_HandleExternalEntityRef); + XML_SetCommentHandler(mExpatParser, Tokenizer_HandleComment); + XML_SetUnknownEncodingHandler(mExpatParser, Tokenizer_HandleUnknownEncoding, NULL); + XML_SetCdataSectionHandler(mExpatParser, Tokenizer_HandleStartCdataSection, + Tokenizer_HandleEndCdataSection); - XML_SetDoctypeDeclHandler(mExpatParser, HandleStartDoctypeDecl, HandleEndDoctypeDecl); + XML_SetDoctypeDeclHandler(mExpatParser, Tokenizer_HandleStartDoctypeDecl, Tokenizer_HandleEndDoctypeDecl); // Set up the user data. XML_SetUserData(mExpatParser, (void*) mState); @@ -519,7 +519,7 @@ void nsExpatTokenizer::FrontloadMisplacedContent(nsDeque& aDeque){ /* Expat Callback Functions start here */ /***************************************/ -void nsExpatTokenizer::HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts) { +void Tokenizer_HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts) { XMLParserState* state = (XMLParserState*) userData; CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_start,eHTMLTag_unknown, nsLiteralString((PRUnichar*)name)); if(theToken) { @@ -531,7 +531,7 @@ void nsExpatTokenizer::HandleStartElement(void *userData, const XML_Char *name, startToken->SetIDAttributeAtom(attributeAtom); } - AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); // For each attribute on this element, create and add attribute tokens to the token queue int theAttrCount=0; @@ -555,7 +555,7 @@ void nsExpatTokenizer::HandleStartElement(void *userData, const XML_Char *name, } } CToken* theTok=(CToken*)theAttrToken; - AddToken(theTok, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(theTok, NS_OK, state->tokenDeque, state->tokenAllocator); atts += 2; } theToken->SetAttributeCount(theAttrCount); @@ -565,18 +565,18 @@ void nsExpatTokenizer::HandleStartElement(void *userData, const XML_Char *name, } } -void nsExpatTokenizer::HandleEndElement(void *userData, const XML_Char *name) { +void Tokenizer_HandleEndElement(void *userData, const XML_Char *name) { XMLParserState* state = (XMLParserState*) userData; CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_end,eHTMLTag_unknown, nsLiteralString((PRUnichar *) name)); if(theToken) { - AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); } else{ //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! } } -void nsExpatTokenizer::HandleCharacterData(void *userData, const XML_Char *s, int len) { +void Tokenizer_HandleCharacterData(void *userData, const XML_Char *s, int len) { XMLParserState* state = (XMLParserState*) userData; if (state->incdata) { @@ -615,7 +615,7 @@ void nsExpatTokenizer::HandleCharacterData(void *userData, const XML_Char *s, in } if(newToken) { - AddToken(newToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(newToken, NS_OK, state->tokenDeque, state->tokenAllocator); } else { //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! @@ -623,7 +623,7 @@ void nsExpatTokenizer::HandleCharacterData(void *userData, const XML_Char *s, in } } -void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) { +void Tokenizer_HandleComment(void *userData, const XML_Char *name) { XMLParserState* state = (XMLParserState*) userData; if (state->indoctype) { // We do not want comments popping out of the doctype... @@ -633,7 +633,7 @@ void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) { } else { CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_comment, eHTMLTag_unknown, nsLiteralString((PRUnichar*)name)); if(theToken) { - AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); } else{ //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! @@ -641,13 +641,13 @@ void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) { } } -void nsExpatTokenizer::HandleStartCdataSection(void *userData) { +void Tokenizer_HandleStartCdataSection(void *userData) { XMLParserState* state = (XMLParserState*) userData; state->incdata = PR_TRUE; } -void nsExpatTokenizer::HandleEndCdataSection(void *userData) { +void Tokenizer_HandleEndCdataSection(void *userData) { XMLParserState* state = (XMLParserState*) userData; CToken* cdataToken = state->tokenAllocator->CreateTokenOfType(eToken_cdatasection, eHTMLTag_unknown, @@ -655,15 +655,15 @@ void nsExpatTokenizer::HandleEndCdataSection(void *userData) { // We've reached the end of the current CDATA section. Push the current // CDATA token onto the token queue - AddToken(cdataToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(cdataToken, NS_OK, state->tokenDeque, state->tokenAllocator); state->incdata = PR_FALSE; state->cdataText.Truncate(); } -void nsExpatTokenizer::HandleProcessingInstruction(void *userData, - const XML_Char *target, - const XML_Char *data) +void Tokenizer_HandleProcessingInstruction(void *userData, + const XML_Char *target, + const XML_Char *data) { XMLParserState* state = (XMLParserState*) userData; nsAutoString theString; @@ -677,14 +677,14 @@ void nsExpatTokenizer::HandleProcessingInstruction(void *userData, CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_instruction,eHTMLTag_unknown, theString); if(theToken) { - AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); } else{ //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! } } -void nsExpatTokenizer::HandleDefault(void *userData, const XML_Char *s, int len) { +void Tokenizer_HandleDefault(void *userData, const XML_Char *s, int len) { XMLParserState* state = (XMLParserState*) userData; if (state->indoctype) { state->doctypeText.Append((PRUnichar*)s, len); @@ -696,18 +696,18 @@ void nsExpatTokenizer::HandleDefault(void *userData, const XML_Char *s, int len) while ((offset = str.FindChar('\n', PR_FALSE, offset + 1)) != -1) { newLine = state->tokenAllocator->CreateTokenOfType(eToken_newline, eHTMLTag_unknown); - AddToken(newLine, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(newLine, NS_OK, state->tokenDeque, state->tokenAllocator); } } } -void nsExpatTokenizer::HandleUnparsedEntityDecl(void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName) { - NS_NOTYETIMPLEMENTED("Error: nsExpatTokenizer::HandleUnparsedEntityDecl() not yet implemented."); +void Tokenizer_HandleUnparsedEntityDecl(void *userData, + const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName) { + NS_NOTYETIMPLEMENTED("Error: Tokenizer_HandleUnparsedEntityDecl() not yet implemented."); } @@ -832,19 +832,19 @@ nsresult nsExpatTokenizer::LoadStream(nsIInputStream* in, return res; } -void nsExpatTokenizer::HandleNotationDecl(void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId){ - NS_NOTYETIMPLEMENTED("Error: nsExpatTokenizer::HandleNotationDecl() not yet implemented."); +void Tokenizer_HandleNotationDecl(void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId){ + NS_NOTYETIMPLEMENTED("Error: Tokenizer_HandleNotationDecl() not yet implemented."); } -int nsExpatTokenizer::HandleExternalEntityRef(XML_Parser parser, - const XML_Char *openEntityNames, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) +int Tokenizer_HandleExternalEntityRef(XML_Parser parser, + const XML_Char *openEntityNames, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) { int result = PR_TRUE; @@ -855,12 +855,12 @@ int nsExpatTokenizer::HandleExternalEntityRef(XML_Parser parser, nsAutoString baseURL( (const PRUnichar*) base ); nsAutoString absURL; - nsresult rv = OpenInputStream(urlSpec, baseURL, getter_AddRefs(in), &absURL); + nsresult rv = nsExpatTokenizer::OpenInputStream(urlSpec, baseURL, getter_AddRefs(in), &absURL); if (NS_SUCCEEDED(rv) && nsnull != in) { PRUint32 retLen = 0; PRUnichar *uniBuf = nsnull; - rv = LoadStream(in, uniBuf, retLen); + rv = nsExpatTokenizer::LoadStream(in, uniBuf, retLen); // Pass the buffer to expat for parsing if (NS_SUCCEEDED(rv) && nsnull != uniBuf) { @@ -882,37 +882,37 @@ int nsExpatTokenizer::HandleExternalEntityRef(XML_Parser parser, } #else /* ! XML_DTD */ - NS_NOTYETIMPLEMENTED("Error: nsExpatTokenizer::HandleExternalEntityRef() not yet implemented."); + NS_NOTYETIMPLEMENTED("Error: Tokenizer_HandleExternalEntityRef() not yet implemented."); #endif /* XML_DTD */ return result; } -int nsExpatTokenizer::HandleUnknownEncoding(void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info) { - NS_NOTYETIMPLEMENTED("Error: nsExpatTokenizer::HandleUnknownEncoding() not yet implemented."); +int Tokenizer_HandleUnknownEncoding(void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info) { + NS_NOTYETIMPLEMENTED("Error: Tokenizer_HandleUnknownEncoding() not yet implemented."); int result=0; return result; } -void nsExpatTokenizer::HandleStartDoctypeDecl(void *userData, - const XML_Char *doctypeName) +void Tokenizer_HandleStartDoctypeDecl(void *userData, + const XML_Char *doctypeName) { XMLParserState* state = (XMLParserState*) userData; state->indoctype = PR_TRUE; state->doctypeText.Assign(NS_LITERAL_STRING("doctypeText.AppendWithConversion(">"); CToken* token = state->tokenAllocator->CreateTokenOfType(eToken_doctypeDecl, eHTMLTag_unknown, state->doctypeText); if (token) { - AddToken(token, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(token, NS_OK, state->tokenDeque, state->tokenAllocator); } state->indoctype = PR_FALSE; state->doctypeText.Truncate(); diff --git a/htmlparser/src/nsExpatTokenizer.h b/htmlparser/src/nsExpatTokenizer.h index fa8fd39e33f..d5047e28041 100644 --- a/htmlparser/src/nsExpatTokenizer.h +++ b/htmlparser/src/nsExpatTokenizer.h @@ -18,12 +18,7 @@ * Rights Reserved. * * Contributor(s): - * This Original Code has been modified by IBM Corporation. Modifications made by IBM - * described herein are Copyright (c) International Business Machines Corporation, 2000. - * Modifications to Mozilla code or documentation identified per MPL Section 3.3 - * - * Date Modified by Description of modification - * 04/20/2000 IBM Corp. OS/2 VisualAge build. + * IBM Corp. */ @@ -64,6 +59,46 @@ typedef struct _XMLParserState XMLParserState; #pragma warning( disable : 4275 ) #endif +#ifdef __cplusplus +extern "C" { +#endif + /* The callback handlers that get called from the expat parser */ + void Tokenizer_HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts); + void Tokenizer_HandleEndElement(void *userData, const XML_Char *name); + void Tokenizer_HandleCharacterData(void *userData, const XML_Char *s, int len); + void Tokenizer_HandleComment(void *userData, const XML_Char *name); + void Tokenizer_HandleProcessingInstruction(void *userData, + const XML_Char *target, + const XML_Char *data); + void Tokenizer_HandleDefault(void *userData, const XML_Char *s, int len); + void Tokenizer_HandleStartCdataSection(void *userData); + void Tokenizer_HandleEndCdataSection(void *userData); + void Tokenizer_HandleUnparsedEntityDecl(void *userData, + const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + void Tokenizer_HandleNotationDecl(void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + int Tokenizer_HandleExternalEntityRef(XML_Parser parser, + const XML_Char *openEntityNames, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + int Tokenizer_HandleUnknownEncoding(void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info); + void Tokenizer_HandleStartDoctypeDecl(void *userData, + const XML_Char *doctypeName); + void Tokenizer_HandleEndDoctypeDecl(void *userData); +#ifdef __cplusplus +} +#endif + CLASS_EXPORT_HTMLPARS nsExpatTokenizer : public nsHTMLTokenizer { public: nsExpatTokenizer(nsString* aURL = nsnull); @@ -116,38 +151,38 @@ protected: PRUint32 &retLen); /* The callback handlers that get called from the expat parser */ - static void PR_CALLBACK HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts); - static void PR_CALLBACK HandleEndElement(void *userData, const XML_Char *name); - static void PR_CALLBACK HandleCharacterData(void *userData, const XML_Char *s, int len); - static void PR_CALLBACK HandleComment(void *userData, const XML_Char *name); - static void PR_CALLBACK HandleProcessingInstruction(void *userData, + friend void Tokenizer_HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts); + friend void Tokenizer_HandleEndElement(void *userData, const XML_Char *name); + friend void Tokenizer_HandleCharacterData(void *userData, const XML_Char *s, int len); + friend void Tokenizer_HandleComment(void *userData, const XML_Char *name); + friend void Tokenizer_HandleProcessingInstruction(void *userData, const XML_Char *target, const XML_Char *data); - static void PR_CALLBACK HandleDefault(void *userData, const XML_Char *s, int len); - static void PR_CALLBACK HandleStartCdataSection(void *userData); - static void PR_CALLBACK HandleEndCdataSection(void *userData); - static void PR_CALLBACK HandleUnparsedEntityDecl(void *userData, + friend void Tokenizer_HandleDefault(void *userData, const XML_Char *s, int len); + friend void Tokenizer_HandleStartCdataSection(void *userData); + friend void Tokenizer_HandleEndCdataSection(void *userData); + friend void Tokenizer_HandleUnparsedEntityDecl(void *userData, const XML_Char *entityName, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId, const XML_Char *notationName); - static void PR_CALLBACK HandleNotationDecl(void *userData, + friend void Tokenizer_HandleNotationDecl(void *userData, const XML_Char *notationName, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId); - static int PR_CALLBACK HandleExternalEntityRef(XML_Parser parser, + friend int Tokenizer_HandleExternalEntityRef(XML_Parser parser, const XML_Char *openEntityNames, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId); - static int PR_CALLBACK HandleUnknownEncoding(void *encodingHandlerData, + friend int Tokenizer_HandleUnknownEncoding(void *encodingHandlerData, const XML_Char *name, XML_Encoding *info); - static void PR_CALLBACK HandleStartDoctypeDecl(void *userData, + friend void Tokenizer_HandleStartDoctypeDecl(void *userData, const XML_Char *doctypeName); - static void PR_CALLBACK HandleEndDoctypeDecl(void *userData); + friend void Tokenizer_HandleEndDoctypeDecl(void *userData); XML_Parser mExpatParser; PRUint32 mBytesParsed; @@ -155,6 +190,7 @@ protected: XMLParserState* mState; }; + extern NS_HTMLPARS nsresult NS_New_Expat_Tokenizer(nsITokenizer** aInstancePtrResult); #endif diff --git a/parser/htmlparser/src/nsExpatDTD.cpp b/parser/htmlparser/src/nsExpatDTD.cpp index c52be44278e..fe160e0cf50 100644 --- a/parser/htmlparser/src/nsExpatDTD.cpp +++ b/parser/htmlparser/src/nsExpatDTD.cpp @@ -310,12 +310,12 @@ nsresult nsExpatDTD::Terminate(nsIParser* aParser) */ void nsExpatDTD::SetupExpatCallbacks(void) { if (mExpatParser) { - XML_SetElementHandler(mExpatParser, HandleStartElement, HandleEndElement); - XML_SetCharacterDataHandler(mExpatParser, HandleCharacterData); - XML_SetProcessingInstructionHandler(mExpatParser, HandleProcessingInstruction); + XML_SetElementHandler(mExpatParser, DTD_HandleStartElement, DTD_HandleEndElement); + XML_SetCharacterDataHandler(mExpatParser, DTD_HandleCharacterData); + XML_SetProcessingInstructionHandler(mExpatParser, DTD_HandleProcessingInstruction); // XML_SetDefaultHandler(mExpatParser, NULL); // XML_SetUnparsedEntityDeclHandler(mExpatParser, NULL); - XML_SetNotationDeclHandler(mExpatParser, HandleNotationDecl); + XML_SetNotationDeclHandler(mExpatParser, DTD_HandleNotationDecl); // XML_SetExternalEntityRefHandler(mExpatParser, NULL); // XML_SetUnknownEncodingHandler(mExpatParser, NULL, NULL); } @@ -536,64 +536,64 @@ nsresult nsExpatDTD::ParseXMLBuffer(const char *buffer){ /* Expat Callback Functions start here */ /***************************************/ -void nsExpatDTD::HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts) +void DTD_HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleStartElement() not yet implemented."); } -void nsExpatDTD::HandleEndElement(void *userData, const XML_Char *name) +void DTD_HandleEndElement(void *userData, const XML_Char *name) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleEndElement() not yet implemented."); } -void nsExpatDTD::HandleCharacterData(void *userData, const XML_Char *s, int len) +void DTD_HandleCharacterData(void *userData, const XML_Char *s, int len) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleCharacterData() not yet implemented."); } -void nsExpatDTD::HandleProcessingInstruction(void *userData, - const XML_Char *target, - const XML_Char *data) +void DTD_HandleProcessingInstruction(void *userData, + const XML_Char *target, + const XML_Char *data) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleProcessingInstruction() not yet implemented."); } -void nsExpatDTD::HandleDefault(void *userData, const XML_Char *s, int len) +void DTD_HandleDefault(void *userData, const XML_Char *s, int len) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleDefault() not yet implemented."); } -void nsExpatDTD::HandleUnparsedEntityDecl(void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName) +void DTD_HandleUnparsedEntityDecl(void *userData, + const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleUnparsedEntityDecl() not yet implemented."); } -void nsExpatDTD::HandleNotationDecl(void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) +void DTD_HandleNotationDecl(void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleNotationDecl() not yet implemented."); } -void nsExpatDTD::HandleExternalEntityRef(XML_Parser parser, - const XML_Char *openEntityNames, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) +void DTD_HandleExternalEntityRef(XML_Parser parser, + const XML_Char *openEntityNames, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleExternalEntityRef() not yet implemented."); } -void nsExpatDTD::HandleUnknownEncoding(void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info) +void DTD_HandleUnknownEncoding(void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info) { NS_NOTYETIMPLEMENTED("Error: nsExpatDTD::HandleUnknownEncoding() not yet implemented."); } diff --git a/parser/htmlparser/src/nsExpatDTD.h b/parser/htmlparser/src/nsExpatDTD.h index cd2a39a417b..e69de29bb2d 100644 --- a/parser/htmlparser/src/nsExpatDTD.h +++ b/parser/htmlparser/src/nsExpatDTD.h @@ -1,297 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - * This Original Code has been modified by IBM Corporation. Modifications made by IBM - * described herein are Copyright (c) International Business Machines Corporation, 2000. - * Modifications to Mozilla code or documentation identified per MPL Section 3.3 - * - * Date Modified by Description of modification - * 04/20/2000 IBM Corp. OS/2 VisualAge build. - */ - -/** - * MODULE NOTES: - * @update gess 4/8/98 - * - * - */ - -#ifndef __NS_EXPAT_DTD -#define __NS_EXPAT_DTD - -#include "nsIDTD.h" -#include "nsITokenizer.h" -#include "nsISupports.h" -#include "nsHTMLTokens.h" -#include "nshtmlpars.h" -#include "nsVoidArray.h" -#include "nsDeque.h" -#include "nsIContentSink.h" -#include "xmlparse.h" - - -#define NS_EXPAT_DTD_IID \ - {0x5ad4b431, 0xcabb, 0x11d2, \ - {0xab, 0xcb, 0x0, 0x10, 0x4b, 0x98, 0x3f, 0xd4}} - - -class nsIDTDDebug; -class nsIParserNode; -class nsParser; - - - -class nsExpatDTD : public nsIDTD { - - public: - - NS_DECL_ISUPPORTS - - - /** - * - * - * @update gess 4/9/98 - * @param - * @return - */ - nsExpatDTD(); - - /** - * - * - * @update gess 4/9/98 - * @param - * @return - */ - virtual ~nsExpatDTD(); - - virtual const nsIID& GetMostDerivedIID(void) const; - - /** - * Call this method if you want the DTD to construct a clone of itself. - * @update gess7/23/98 - * @param - * @return - */ - virtual nsresult CreateNewInstance(nsIDTD** aInstancePtrResult); - - /** - * This method is called to determine if the given DTD can parse - * a document in a given source-type. - * NOTE: Parsing always assumes that the end result will involve - * storing the result in the main content model. - * @update gess6/24/98 - * @param - * @return TRUE if this DTD can satisfy the request; FALSE otherwise. - */ - virtual eAutoDetectResult CanParse(CParserContext& aParserContext,nsString& aBuffer, PRInt32 aVersion); - - /** - * The parser uses a code sandwich to wrap the parsing process. Before - * the process begins, WillBuildModel() is called. Afterwards the parser - * calls DidBuildModel(). - * @update rickg 03.20.2000 - * @param aParserContext - * @param aSink - * @return error code (almost always 0) - */ - NS_IMETHOD WillBuildModel( const CParserContext& aParserContext,nsIContentSink* aSink); - - - /** - * The parser uses a code sandwich to wrap the parsing process. Before - * the process begins, WillBuildModel() is called. Afterwards the parser - * calls DidBuildModel(). - * @update gess5/18/98 - * @param aFilename is the name of the file being parsed. - * @return error code (almost always 0) - */ - NS_IMETHOD BuildModel(nsIParser* aParser,nsITokenizer* aTokenizer,nsITokenObserver* anObserver=0,nsIContentSink* aSink=0); - - /** - * The parser uses a code sandwich to wrap the parsing process. Before - * the process begins, WillBuildModel() is called. Afterwards the parser - * calls DidBuildModel(). - * @update gess5/18/98 - * @param anErrorCode contans the last error that occured - * @return error code - */ - NS_IMETHOD DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParser* aParser,nsIContentSink* aSink=0); - - /** - * - * @update gess 3/25/98 - * @param aToken -- token object to be put into content model - * @return 0 if all is well; non-zero is an error - */ - NS_IMETHOD HandleToken(CToken* aToken,nsIParser* aParser); - - /** - * - * @update gess12/28/98 - * @param - * @return - */ - NS_IMETHOD GetTokenizer(nsITokenizer*& aTokenizer); - - /** - * - * @update gess5/18/98 - * @param - * @return - */ - NS_IMETHOD WillResumeParse(void); - - /** - * - * @update gess5/18/98 - * @param - * @return - */ - NS_IMETHOD WillInterruptParse(void); - - /** - * Called by the parser to initiate dtd verification of the - * internal context stack. - * @update gess 7/23/98 - * @param - * @return - */ - virtual PRBool Verify(nsString& aURLRef,nsIParser* aParser); - - /** - * Set this to TRUE if you want the DTD to verify its - * context stack. - * @update gess 7/23/98 - * @param - * @return - */ - virtual void SetVerification(PRBool aEnable); - - /** - * This method is called to determine whether or not a tag - * of one type can contain a tag of another type. - * - * @update gess 3/25/98 - * @param aParent -- int tag of parent container - * @param aChild -- int tag of child container - * @return PR_TRUE if parent can contain child - */ - virtual PRBool CanContain(PRInt32 aParent,PRInt32 aChild) const; - - /** - * This method gets called to determine whether a given - * tag is itself a container - * - * @update gess 3/25/98 - * @param aTag -- tag to test for containership - * @return PR_TRUE if given tag can contain other tags - */ - virtual PRBool IsContainer(PRInt32 aTag) const; - - /** - * Use this id you want to stop the building content model - * --------------[ Sets DTD to STOP mode ]---------------- - * It's recommended to use this method in accordance with - * the parser's terminate() method. - * - * @update harishd 07/22/99 - * @param - * @return - */ - virtual nsresult Terminate(nsIParser* aParser=nsnull); - - /** - * Give rest of world access to our tag enums, so that CanContain(), etc, - * become useful. - */ - NS_IMETHOD StringTagToIntTag(nsString &aTag, PRInt32* aIntTag) const; - - NS_IMETHOD IntTagToStringTag(PRInt32 aIntTag, nsString& aTag) const; - - NS_IMETHOD ConvertEntityToUnicode(const nsString& aEntity, PRInt32* aUnicode) const; - - virtual PRBool IsBlockElement(PRInt32 aTagID,PRInt32 aParentID) const {return PR_FALSE;} - virtual PRBool IsInlineElement(PRInt32 aTagID,PRInt32 aParentID) const {return PR_FALSE;} - - /** - * Retrieve a ptr to the global token recycler... - * @update gess8/4/98 - * @return ptr to recycler (or null) - */ - virtual nsTokenAllocator* GetTokenAllocator(void); - - /** - * Parse an XML buffer using expat - * @update nra 2/29/99 - * @return NS_ERROR_FAILURE if expat encounters an error, else NS_OK - */ - nsresult ParseXMLBuffer(const char *buffer); - -protected: - /** - * Sets up the callbacks for the expat parser - * @update nra 2/24/99 - * @param none - * @return none - */ - void SetupExpatCallbacks(void); - - /* The callback handlers that get called from the expat parser */ - static void PR_CALLBACK HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts); - static void PR_CALLBACK HandleEndElement(void *userData, const XML_Char *name); - static void PR_CALLBACK HandleCharacterData(void *userData, const XML_Char *s, int len); - static void PR_CALLBACK HandleProcessingInstruction(void *userData, - const XML_Char *target, - const XML_Char *data); - static void PR_CALLBACK HandleDefault(void *userData, const XML_Char *s, int len); - static void PR_CALLBACK HandleUnparsedEntityDecl(void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - static void PR_CALLBACK HandleNotationDecl(void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - static void PR_CALLBACK HandleExternalEntityRef(XML_Parser parser, - const XML_Char *openEntityNames, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - static void PR_CALLBACK HandleUnknownEncoding(void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info); - - XML_Parser mExpatParser; - nsParser* mParser; - nsIContentSink* mSink; - nsString mFilename; - PRInt32 mLineNumber; - nsITokenizer* mTokenizer; -}; - -extern NS_HTMLPARS nsresult NS_New_Expat_DTD(nsIDTD** aInstancePtrResult); - - -#endif diff --git a/parser/htmlparser/src/nsExpatTokenizer.cpp b/parser/htmlparser/src/nsExpatTokenizer.cpp index 21a3c6a2aee..02c491a2892 100644 --- a/parser/htmlparser/src/nsExpatTokenizer.cpp +++ b/parser/htmlparser/src/nsExpatTokenizer.cpp @@ -146,19 +146,19 @@ NS_IMPL_RELEASE(nsExpatTokenizer) void nsExpatTokenizer::SetupExpatParser(void) { if (mExpatParser) { // Set up the callbacks - XML_SetElementHandler(mExpatParser, HandleStartElement, HandleEndElement); - XML_SetCharacterDataHandler(mExpatParser, HandleCharacterData); - XML_SetProcessingInstructionHandler(mExpatParser, HandleProcessingInstruction); - XML_SetDefaultHandlerExpand(mExpatParser, HandleDefault); - XML_SetUnparsedEntityDeclHandler(mExpatParser, HandleUnparsedEntityDecl); - XML_SetNotationDeclHandler(mExpatParser, HandleNotationDecl); - XML_SetExternalEntityRefHandler(mExpatParser, HandleExternalEntityRef); - XML_SetCommentHandler(mExpatParser, HandleComment); - XML_SetUnknownEncodingHandler(mExpatParser, HandleUnknownEncoding, NULL); - XML_SetCdataSectionHandler(mExpatParser, HandleStartCdataSection, - HandleEndCdataSection); + XML_SetElementHandler(mExpatParser, Tokenizer_HandleStartElement, Tokenizer_HandleEndElement); + XML_SetCharacterDataHandler(mExpatParser, Tokenizer_HandleCharacterData); + XML_SetProcessingInstructionHandler(mExpatParser, Tokenizer_HandleProcessingInstruction); + XML_SetDefaultHandlerExpand(mExpatParser, Tokenizer_HandleDefault); + XML_SetUnparsedEntityDeclHandler(mExpatParser, Tokenizer_HandleUnparsedEntityDecl); + XML_SetNotationDeclHandler(mExpatParser, Tokenizer_HandleNotationDecl); + XML_SetExternalEntityRefHandler(mExpatParser, Tokenizer_HandleExternalEntityRef); + XML_SetCommentHandler(mExpatParser, Tokenizer_HandleComment); + XML_SetUnknownEncodingHandler(mExpatParser, Tokenizer_HandleUnknownEncoding, NULL); + XML_SetCdataSectionHandler(mExpatParser, Tokenizer_HandleStartCdataSection, + Tokenizer_HandleEndCdataSection); - XML_SetDoctypeDeclHandler(mExpatParser, HandleStartDoctypeDecl, HandleEndDoctypeDecl); + XML_SetDoctypeDeclHandler(mExpatParser, Tokenizer_HandleStartDoctypeDecl, Tokenizer_HandleEndDoctypeDecl); // Set up the user data. XML_SetUserData(mExpatParser, (void*) mState); @@ -519,7 +519,7 @@ void nsExpatTokenizer::FrontloadMisplacedContent(nsDeque& aDeque){ /* Expat Callback Functions start here */ /***************************************/ -void nsExpatTokenizer::HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts) { +void Tokenizer_HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts) { XMLParserState* state = (XMLParserState*) userData; CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_start,eHTMLTag_unknown, nsLiteralString((PRUnichar*)name)); if(theToken) { @@ -531,7 +531,7 @@ void nsExpatTokenizer::HandleStartElement(void *userData, const XML_Char *name, startToken->SetIDAttributeAtom(attributeAtom); } - AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); // For each attribute on this element, create and add attribute tokens to the token queue int theAttrCount=0; @@ -555,7 +555,7 @@ void nsExpatTokenizer::HandleStartElement(void *userData, const XML_Char *name, } } CToken* theTok=(CToken*)theAttrToken; - AddToken(theTok, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(theTok, NS_OK, state->tokenDeque, state->tokenAllocator); atts += 2; } theToken->SetAttributeCount(theAttrCount); @@ -565,18 +565,18 @@ void nsExpatTokenizer::HandleStartElement(void *userData, const XML_Char *name, } } -void nsExpatTokenizer::HandleEndElement(void *userData, const XML_Char *name) { +void Tokenizer_HandleEndElement(void *userData, const XML_Char *name) { XMLParserState* state = (XMLParserState*) userData; CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_end,eHTMLTag_unknown, nsLiteralString((PRUnichar *) name)); if(theToken) { - AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); } else{ //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! } } -void nsExpatTokenizer::HandleCharacterData(void *userData, const XML_Char *s, int len) { +void Tokenizer_HandleCharacterData(void *userData, const XML_Char *s, int len) { XMLParserState* state = (XMLParserState*) userData; if (state->incdata) { @@ -615,7 +615,7 @@ void nsExpatTokenizer::HandleCharacterData(void *userData, const XML_Char *s, in } if(newToken) { - AddToken(newToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(newToken, NS_OK, state->tokenDeque, state->tokenAllocator); } else { //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! @@ -623,7 +623,7 @@ void nsExpatTokenizer::HandleCharacterData(void *userData, const XML_Char *s, in } } -void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) { +void Tokenizer_HandleComment(void *userData, const XML_Char *name) { XMLParserState* state = (XMLParserState*) userData; if (state->indoctype) { // We do not want comments popping out of the doctype... @@ -633,7 +633,7 @@ void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) { } else { CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_comment, eHTMLTag_unknown, nsLiteralString((PRUnichar*)name)); if(theToken) { - AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); } else{ //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! @@ -641,13 +641,13 @@ void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) { } } -void nsExpatTokenizer::HandleStartCdataSection(void *userData) { +void Tokenizer_HandleStartCdataSection(void *userData) { XMLParserState* state = (XMLParserState*) userData; state->incdata = PR_TRUE; } -void nsExpatTokenizer::HandleEndCdataSection(void *userData) { +void Tokenizer_HandleEndCdataSection(void *userData) { XMLParserState* state = (XMLParserState*) userData; CToken* cdataToken = state->tokenAllocator->CreateTokenOfType(eToken_cdatasection, eHTMLTag_unknown, @@ -655,15 +655,15 @@ void nsExpatTokenizer::HandleEndCdataSection(void *userData) { // We've reached the end of the current CDATA section. Push the current // CDATA token onto the token queue - AddToken(cdataToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(cdataToken, NS_OK, state->tokenDeque, state->tokenAllocator); state->incdata = PR_FALSE; state->cdataText.Truncate(); } -void nsExpatTokenizer::HandleProcessingInstruction(void *userData, - const XML_Char *target, - const XML_Char *data) +void Tokenizer_HandleProcessingInstruction(void *userData, + const XML_Char *target, + const XML_Char *data) { XMLParserState* state = (XMLParserState*) userData; nsAutoString theString; @@ -677,14 +677,14 @@ void nsExpatTokenizer::HandleProcessingInstruction(void *userData, CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_instruction,eHTMLTag_unknown, theString); if(theToken) { - AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); } else{ //THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! } } -void nsExpatTokenizer::HandleDefault(void *userData, const XML_Char *s, int len) { +void Tokenizer_HandleDefault(void *userData, const XML_Char *s, int len) { XMLParserState* state = (XMLParserState*) userData; if (state->indoctype) { state->doctypeText.Append((PRUnichar*)s, len); @@ -696,18 +696,18 @@ void nsExpatTokenizer::HandleDefault(void *userData, const XML_Char *s, int len) while ((offset = str.FindChar('\n', PR_FALSE, offset + 1)) != -1) { newLine = state->tokenAllocator->CreateTokenOfType(eToken_newline, eHTMLTag_unknown); - AddToken(newLine, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(newLine, NS_OK, state->tokenDeque, state->tokenAllocator); } } } -void nsExpatTokenizer::HandleUnparsedEntityDecl(void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName) { - NS_NOTYETIMPLEMENTED("Error: nsExpatTokenizer::HandleUnparsedEntityDecl() not yet implemented."); +void Tokenizer_HandleUnparsedEntityDecl(void *userData, + const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName) { + NS_NOTYETIMPLEMENTED("Error: Tokenizer_HandleUnparsedEntityDecl() not yet implemented."); } @@ -832,19 +832,19 @@ nsresult nsExpatTokenizer::LoadStream(nsIInputStream* in, return res; } -void nsExpatTokenizer::HandleNotationDecl(void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId){ - NS_NOTYETIMPLEMENTED("Error: nsExpatTokenizer::HandleNotationDecl() not yet implemented."); +void Tokenizer_HandleNotationDecl(void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId){ + NS_NOTYETIMPLEMENTED("Error: Tokenizer_HandleNotationDecl() not yet implemented."); } -int nsExpatTokenizer::HandleExternalEntityRef(XML_Parser parser, - const XML_Char *openEntityNames, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId) +int Tokenizer_HandleExternalEntityRef(XML_Parser parser, + const XML_Char *openEntityNames, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) { int result = PR_TRUE; @@ -855,12 +855,12 @@ int nsExpatTokenizer::HandleExternalEntityRef(XML_Parser parser, nsAutoString baseURL( (const PRUnichar*) base ); nsAutoString absURL; - nsresult rv = OpenInputStream(urlSpec, baseURL, getter_AddRefs(in), &absURL); + nsresult rv = nsExpatTokenizer::OpenInputStream(urlSpec, baseURL, getter_AddRefs(in), &absURL); if (NS_SUCCEEDED(rv) && nsnull != in) { PRUint32 retLen = 0; PRUnichar *uniBuf = nsnull; - rv = LoadStream(in, uniBuf, retLen); + rv = nsExpatTokenizer::LoadStream(in, uniBuf, retLen); // Pass the buffer to expat for parsing if (NS_SUCCEEDED(rv) && nsnull != uniBuf) { @@ -882,37 +882,37 @@ int nsExpatTokenizer::HandleExternalEntityRef(XML_Parser parser, } #else /* ! XML_DTD */ - NS_NOTYETIMPLEMENTED("Error: nsExpatTokenizer::HandleExternalEntityRef() not yet implemented."); + NS_NOTYETIMPLEMENTED("Error: Tokenizer_HandleExternalEntityRef() not yet implemented."); #endif /* XML_DTD */ return result; } -int nsExpatTokenizer::HandleUnknownEncoding(void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info) { - NS_NOTYETIMPLEMENTED("Error: nsExpatTokenizer::HandleUnknownEncoding() not yet implemented."); +int Tokenizer_HandleUnknownEncoding(void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info) { + NS_NOTYETIMPLEMENTED("Error: Tokenizer_HandleUnknownEncoding() not yet implemented."); int result=0; return result; } -void nsExpatTokenizer::HandleStartDoctypeDecl(void *userData, - const XML_Char *doctypeName) +void Tokenizer_HandleStartDoctypeDecl(void *userData, + const XML_Char *doctypeName) { XMLParserState* state = (XMLParserState*) userData; state->indoctype = PR_TRUE; state->doctypeText.Assign(NS_LITERAL_STRING("doctypeText.AppendWithConversion(">"); CToken* token = state->tokenAllocator->CreateTokenOfType(eToken_doctypeDecl, eHTMLTag_unknown, state->doctypeText); if (token) { - AddToken(token, NS_OK, state->tokenDeque, state->tokenAllocator); + nsExpatTokenizer::AddToken(token, NS_OK, state->tokenDeque, state->tokenAllocator); } state->indoctype = PR_FALSE; state->doctypeText.Truncate(); diff --git a/parser/htmlparser/src/nsExpatTokenizer.h b/parser/htmlparser/src/nsExpatTokenizer.h index fa8fd39e33f..d5047e28041 100644 --- a/parser/htmlparser/src/nsExpatTokenizer.h +++ b/parser/htmlparser/src/nsExpatTokenizer.h @@ -18,12 +18,7 @@ * Rights Reserved. * * Contributor(s): - * This Original Code has been modified by IBM Corporation. Modifications made by IBM - * described herein are Copyright (c) International Business Machines Corporation, 2000. - * Modifications to Mozilla code or documentation identified per MPL Section 3.3 - * - * Date Modified by Description of modification - * 04/20/2000 IBM Corp. OS/2 VisualAge build. + * IBM Corp. */ @@ -64,6 +59,46 @@ typedef struct _XMLParserState XMLParserState; #pragma warning( disable : 4275 ) #endif +#ifdef __cplusplus +extern "C" { +#endif + /* The callback handlers that get called from the expat parser */ + void Tokenizer_HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts); + void Tokenizer_HandleEndElement(void *userData, const XML_Char *name); + void Tokenizer_HandleCharacterData(void *userData, const XML_Char *s, int len); + void Tokenizer_HandleComment(void *userData, const XML_Char *name); + void Tokenizer_HandleProcessingInstruction(void *userData, + const XML_Char *target, + const XML_Char *data); + void Tokenizer_HandleDefault(void *userData, const XML_Char *s, int len); + void Tokenizer_HandleStartCdataSection(void *userData); + void Tokenizer_HandleEndCdataSection(void *userData); + void Tokenizer_HandleUnparsedEntityDecl(void *userData, + const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + void Tokenizer_HandleNotationDecl(void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + int Tokenizer_HandleExternalEntityRef(XML_Parser parser, + const XML_Char *openEntityNames, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + int Tokenizer_HandleUnknownEncoding(void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info); + void Tokenizer_HandleStartDoctypeDecl(void *userData, + const XML_Char *doctypeName); + void Tokenizer_HandleEndDoctypeDecl(void *userData); +#ifdef __cplusplus +} +#endif + CLASS_EXPORT_HTMLPARS nsExpatTokenizer : public nsHTMLTokenizer { public: nsExpatTokenizer(nsString* aURL = nsnull); @@ -116,38 +151,38 @@ protected: PRUint32 &retLen); /* The callback handlers that get called from the expat parser */ - static void PR_CALLBACK HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts); - static void PR_CALLBACK HandleEndElement(void *userData, const XML_Char *name); - static void PR_CALLBACK HandleCharacterData(void *userData, const XML_Char *s, int len); - static void PR_CALLBACK HandleComment(void *userData, const XML_Char *name); - static void PR_CALLBACK HandleProcessingInstruction(void *userData, + friend void Tokenizer_HandleStartElement(void *userData, const XML_Char *name, const XML_Char **atts); + friend void Tokenizer_HandleEndElement(void *userData, const XML_Char *name); + friend void Tokenizer_HandleCharacterData(void *userData, const XML_Char *s, int len); + friend void Tokenizer_HandleComment(void *userData, const XML_Char *name); + friend void Tokenizer_HandleProcessingInstruction(void *userData, const XML_Char *target, const XML_Char *data); - static void PR_CALLBACK HandleDefault(void *userData, const XML_Char *s, int len); - static void PR_CALLBACK HandleStartCdataSection(void *userData); - static void PR_CALLBACK HandleEndCdataSection(void *userData); - static void PR_CALLBACK HandleUnparsedEntityDecl(void *userData, + friend void Tokenizer_HandleDefault(void *userData, const XML_Char *s, int len); + friend void Tokenizer_HandleStartCdataSection(void *userData); + friend void Tokenizer_HandleEndCdataSection(void *userData); + friend void Tokenizer_HandleUnparsedEntityDecl(void *userData, const XML_Char *entityName, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId, const XML_Char *notationName); - static void PR_CALLBACK HandleNotationDecl(void *userData, + friend void Tokenizer_HandleNotationDecl(void *userData, const XML_Char *notationName, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId); - static int PR_CALLBACK HandleExternalEntityRef(XML_Parser parser, + friend int Tokenizer_HandleExternalEntityRef(XML_Parser parser, const XML_Char *openEntityNames, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId); - static int PR_CALLBACK HandleUnknownEncoding(void *encodingHandlerData, + friend int Tokenizer_HandleUnknownEncoding(void *encodingHandlerData, const XML_Char *name, XML_Encoding *info); - static void PR_CALLBACK HandleStartDoctypeDecl(void *userData, + friend void Tokenizer_HandleStartDoctypeDecl(void *userData, const XML_Char *doctypeName); - static void PR_CALLBACK HandleEndDoctypeDecl(void *userData); + friend void Tokenizer_HandleEndDoctypeDecl(void *userData); XML_Parser mExpatParser; PRUint32 mBytesParsed; @@ -155,6 +190,7 @@ protected: XMLParserState* mState; }; + extern NS_HTMLPARS nsresult NS_New_Expat_Tokenizer(nsITokenizer** aInstancePtrResult); #endif