Bug 64448, comments in internal subset moved to before internal subset. I also fixed some static global variables and NS_GET_IID stuff. r=harishd, sr=vidur.

This commit is contained in:
heikki%netscape.com 2001-01-17 18:59:12 +00:00
Родитель 7dc0c2789c
Коммит f9c74bf2ef
4 изменённых файлов: 30 добавлений и 178 удалений

Просмотреть файл

@ -60,8 +60,6 @@ typedef struct _XMLParserState {
And now for the main class -- nsExpatTokenizer... And now for the main class -- nsExpatTokenizer...
************************************************************************/ ************************************************************************/
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kITokenizerIID, NS_ITOKENIZER_IID);
static NS_DEFINE_IID(kHTMLTokenizerIID, NS_HTMLTOKENIZER_IID); static NS_DEFINE_IID(kHTMLTokenizerIID, NS_HTMLTOKENIZER_IID);
static NS_DEFINE_IID(kClassIID, NS_EXPATTOKENIZER_IID); static NS_DEFINE_IID(kClassIID, NS_EXPATTOKENIZER_IID);
@ -100,10 +98,10 @@ nsresult nsExpatTokenizer::QueryInterface(const nsIID& aIID, void** aInstancePtr
return NS_ERROR_NULL_POINTER; return NS_ERROR_NULL_POINTER;
} }
if(aIID.Equals(kISupportsIID)) { //do IUnknown... if(aIID.Equals(NS_GET_IID(nsISupports))) { //do IUnknown...
*aInstancePtr = (nsExpatTokenizer*)(this); *aInstancePtr = (nsExpatTokenizer*)(this);
} }
else if(aIID.Equals(kITokenizerIID)) { //do ITokenizer base class... else if(aIID.Equals(NS_GET_IID(nsITokenizer))) { //do ITokenizer base class...
*aInstancePtr = (nsITokenizer*)(this); *aInstancePtr = (nsITokenizer*)(this);
} }
else if(aIID.Equals(kHTMLTokenizerIID)) { //do nsHTMLTokenizer base class... else if(aIID.Equals(kHTMLTokenizerIID)) { //do nsHTMLTokenizer base class...
@ -627,12 +625,19 @@ void nsExpatTokenizer::HandleCharacterData(void *userData, const XML_Char *s, in
void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) { void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) {
XMLParserState* state = (XMLParserState*) userData; XMLParserState* state = (XMLParserState*) userData;
CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_comment, eHTMLTag_unknown, nsLiteralString((PRUnichar*)name)); if (state->indoctype) {
if(theToken) { // We do not want comments popping out of the doctype...
AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); state->doctypeText.Append(NS_LITERAL_STRING("<!--"));
} state->doctypeText.Append((PRUnichar*)name);
else{ state->doctypeText.Append(NS_LITERAL_STRING("-->"));
//THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! } else {
CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_comment, eHTMLTag_unknown, nsLiteralString((PRUnichar*)name));
if(theToken) {
AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator);
}
else{
//THROW A HUGE ERROR IF WE CANT CREATE A TOKEN!
}
} }
} }

Просмотреть файл

@ -1,79 +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):
*/
/**
* MODULE NOTES:
* @update gess 4/1/98
*
*/
#ifndef __NSITOKENIZER__
#define __NSITOKENIZER__
#include "nsISupports.h"
#include "prtypes.h"
#include "nshtmlpars.h"
class CToken;
class nsScanner;
class nsDeque;
class nsTokenAllocator;
#define NS_ITOKENIZER_IID \
{0xe4238ddc, 0x9eb6, 0x11d2, {0xba, 0xa5, 0x0, 0x10, 0x4b, 0x98, 0x3f, 0xd4 }}
/**
* This interface is used as a callback to objects interested
* in observing the token stream created from the parse process.
*/
class nsITokenObserver {
public:
virtual PRBool operator()(CToken* aToken)=0;
};
/***************************************************************
Notes:
***************************************************************/
class nsITokenizer : public nsISupports {
public:
virtual nsresult WillTokenize(PRBool aIsFinalChunk,nsTokenAllocator* aTokenAllocator)=0;
virtual nsresult ConsumeToken(nsScanner& aScanner,PRBool& aFlushTokens)=0;
virtual nsresult DidTokenize(PRBool aIsFinalChunk)=0;
virtual nsTokenAllocator* GetTokenAllocator(void)=0;
virtual CToken* PushTokenFront(CToken* aToken)=0;
virtual CToken* PushToken(CToken* aToken)=0;
virtual CToken* PopToken(void)=0;
virtual CToken* PeekToken(void)=0;
virtual PRInt32 GetCount(void)=0;
virtual CToken* GetTokenAt(PRInt32 anIndex)=0;
virtual void PrependTokens(nsDeque& aDeque)=0;
};
#endif

Просмотреть файл

@ -60,8 +60,6 @@ typedef struct _XMLParserState {
And now for the main class -- nsExpatTokenizer... And now for the main class -- nsExpatTokenizer...
************************************************************************/ ************************************************************************/
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kITokenizerIID, NS_ITOKENIZER_IID);
static NS_DEFINE_IID(kHTMLTokenizerIID, NS_HTMLTOKENIZER_IID); static NS_DEFINE_IID(kHTMLTokenizerIID, NS_HTMLTOKENIZER_IID);
static NS_DEFINE_IID(kClassIID, NS_EXPATTOKENIZER_IID); static NS_DEFINE_IID(kClassIID, NS_EXPATTOKENIZER_IID);
@ -100,10 +98,10 @@ nsresult nsExpatTokenizer::QueryInterface(const nsIID& aIID, void** aInstancePtr
return NS_ERROR_NULL_POINTER; return NS_ERROR_NULL_POINTER;
} }
if(aIID.Equals(kISupportsIID)) { //do IUnknown... if(aIID.Equals(NS_GET_IID(nsISupports))) { //do IUnknown...
*aInstancePtr = (nsExpatTokenizer*)(this); *aInstancePtr = (nsExpatTokenizer*)(this);
} }
else if(aIID.Equals(kITokenizerIID)) { //do ITokenizer base class... else if(aIID.Equals(NS_GET_IID(nsITokenizer))) { //do ITokenizer base class...
*aInstancePtr = (nsITokenizer*)(this); *aInstancePtr = (nsITokenizer*)(this);
} }
else if(aIID.Equals(kHTMLTokenizerIID)) { //do nsHTMLTokenizer base class... else if(aIID.Equals(kHTMLTokenizerIID)) { //do nsHTMLTokenizer base class...
@ -627,12 +625,19 @@ void nsExpatTokenizer::HandleCharacterData(void *userData, const XML_Char *s, in
void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) { void nsExpatTokenizer::HandleComment(void *userData, const XML_Char *name) {
XMLParserState* state = (XMLParserState*) userData; XMLParserState* state = (XMLParserState*) userData;
CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_comment, eHTMLTag_unknown, nsLiteralString((PRUnichar*)name)); if (state->indoctype) {
if(theToken) { // We do not want comments popping out of the doctype...
AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator); state->doctypeText.Append(NS_LITERAL_STRING("<!--"));
} state->doctypeText.Append((PRUnichar*)name);
else{ state->doctypeText.Append(NS_LITERAL_STRING("-->"));
//THROW A HUGE ERROR IF WE CANT CREATE A TOKEN! } else {
CToken* theToken = state->tokenAllocator->CreateTokenOfType(eToken_comment, eHTMLTag_unknown, nsLiteralString((PRUnichar*)name));
if(theToken) {
AddToken(theToken, NS_OK, state->tokenDeque, state->tokenAllocator);
}
else{
//THROW A HUGE ERROR IF WE CANT CREATE A TOKEN!
}
} }
} }

Просмотреть файл

@ -1,79 +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):
*/
/**
* MODULE NOTES:
* @update gess 4/1/98
*
*/
#ifndef __NSITOKENIZER__
#define __NSITOKENIZER__
#include "nsISupports.h"
#include "prtypes.h"
#include "nshtmlpars.h"
class CToken;
class nsScanner;
class nsDeque;
class nsTokenAllocator;
#define NS_ITOKENIZER_IID \
{0xe4238ddc, 0x9eb6, 0x11d2, {0xba, 0xa5, 0x0, 0x10, 0x4b, 0x98, 0x3f, 0xd4 }}
/**
* This interface is used as a callback to objects interested
* in observing the token stream created from the parse process.
*/
class nsITokenObserver {
public:
virtual PRBool operator()(CToken* aToken)=0;
};
/***************************************************************
Notes:
***************************************************************/
class nsITokenizer : public nsISupports {
public:
virtual nsresult WillTokenize(PRBool aIsFinalChunk,nsTokenAllocator* aTokenAllocator)=0;
virtual nsresult ConsumeToken(nsScanner& aScanner,PRBool& aFlushTokens)=0;
virtual nsresult DidTokenize(PRBool aIsFinalChunk)=0;
virtual nsTokenAllocator* GetTokenAllocator(void)=0;
virtual CToken* PushTokenFront(CToken* aToken)=0;
virtual CToken* PushToken(CToken* aToken)=0;
virtual CToken* PopToken(void)=0;
virtual CToken* PeekToken(void)=0;
virtual PRInt32 GetCount(void)=0;
virtual CToken* GetTokenAt(PRInt32 anIndex)=0;
virtual void PrependTokens(nsDeque& aDeque)=0;
};
#endif