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.

git-svn-id: svn://10.0.0.236/trunk@85027 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
heikki%netscape.com
2001-01-17 18:59:12 +00:00
parent c19d8bbefe
commit f18ce5bc62
4 changed files with 32 additions and 20 deletions

View File

@@ -60,8 +60,6 @@ typedef struct _XMLParserState {
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(kClassIID, NS_EXPATTOKENIZER_IID);
@@ -100,10 +98,10 @@ nsresult nsExpatTokenizer::QueryInterface(const nsIID& aIID, void** aInstancePtr
return NS_ERROR_NULL_POINTER;
}
if(aIID.Equals(kISupportsIID)) { //do IUnknown...
if(aIID.Equals(NS_GET_IID(nsISupports))) { //do IUnknown...
*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);
}
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) {
XMLParserState* state = (XMLParserState*) userData;
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!
if (state->indoctype) {
// We do not want comments popping out of the doctype...
state->doctypeText.Append(NS_LITERAL_STRING("<!--"));
state->doctypeText.Append((PRUnichar*)name);
state->doctypeText.Append(NS_LITERAL_STRING("-->"));
} 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!
}
}
}

View File

@@ -57,6 +57,7 @@ public:
class nsITokenizer : public nsISupports {
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ITOKENIZER_IID)
virtual nsresult WillTokenize(PRBool aIsFinalChunk,nsTokenAllocator* aTokenAllocator)=0;
virtual nsresult ConsumeToken(nsScanner& aScanner,PRBool& aFlushTokens)=0;

View File

@@ -60,8 +60,6 @@ typedef struct _XMLParserState {
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(kClassIID, NS_EXPATTOKENIZER_IID);
@@ -100,10 +98,10 @@ nsresult nsExpatTokenizer::QueryInterface(const nsIID& aIID, void** aInstancePtr
return NS_ERROR_NULL_POINTER;
}
if(aIID.Equals(kISupportsIID)) { //do IUnknown...
if(aIID.Equals(NS_GET_IID(nsISupports))) { //do IUnknown...
*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);
}
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) {
XMLParserState* state = (XMLParserState*) userData;
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!
if (state->indoctype) {
// We do not want comments popping out of the doctype...
state->doctypeText.Append(NS_LITERAL_STRING("<!--"));
state->doctypeText.Append((PRUnichar*)name);
state->doctypeText.Append(NS_LITERAL_STRING("-->"));
} 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!
}
}
}

View File

@@ -57,6 +57,7 @@ public:
class nsITokenizer : public nsISupports {
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ITOKENIZER_IID)
virtual nsresult WillTokenize(PRBool aIsFinalChunk,nsTokenAllocator* aTokenAllocator)=0;
virtual nsresult ConsumeToken(nsScanner& aScanner,PRBool& aFlushTokens)=0;