diff --git a/mozilla/htmlparser/src/nsIParser.h b/mozilla/htmlparser/src/nsIParser.h index cc688a2a192..58f03895ecd 100644 --- a/mozilla/htmlparser/src/nsIParser.h +++ b/mozilla/htmlparser/src/nsIParser.h @@ -83,7 +83,7 @@ enum eStreamState {eNone,eOnStart,eOnDataAvail,eOnStop}; class nsITagStack { public: virtual void Push(PRUnichar* aTag)=0; - virtual PRUnichar* Pop(PRUnichar* aTag)=0; + virtual PRUnichar* Pop(void)=0; virtual PRUnichar* TagAt(PRUint32 anIndex)=0; virtual PRUint32 GetSize(void)=0; }; @@ -147,6 +147,13 @@ class nsIParser : public nsISupports { */ virtual void SetDocumentCharset(nsString& aCharset, nsCharsetSource aSource)=0; + /** + * Call this to get a newly constructed tagstack + * @update gess 5/05/99 + * @param aTagStack is an out parm that will contain your result + * @return NS_OK if successful, or NS_HTMLPARSER_MEMORY_ERROR on error + */ + virtual nsresult CreateTagStack(nsITagStack** aTagStack)=0; /****************************************************************************************** @@ -198,23 +205,14 @@ class nsIParser : public nsISupports { #define NS_ERROR_HTMLPARSER_BADURL NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1005) #define NS_ERROR_HTMLPARSER_INVALIDPARSERCONTEXT NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1006) #define NS_ERROR_HTMLPARSER_INTERRUPTED NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1007) -#define NS_ERROR_HTMLPARSER_BADTOKENIZER NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1008) -#define NS_ERROR_HTMLPARSER_BADATTRIBUTE NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1009) -#define NS_ERROR_HTMLPARSER_UNRESOLVEDDTD NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1010) -#define NS_ERROR_HTMLPARSER_MISPLACED NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1011) +#define NS_ERROR_HTMLPARSER_BLOCK NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1008) +#define NS_ERROR_HTMLPARSER_BADTOKENIZER NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1009) +#define NS_ERROR_HTMLPARSER_BADATTRIBUTE NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1010) +#define NS_ERROR_HTMLPARSER_UNRESOLVEDDTD NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1011) +#define NS_ERROR_HTMLPARSER_MISPLACED NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1012) +#define NS_ERROR_HTMLPARSER_MEMORYFAILURE NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1013) - -/** - * Return codes for parsing routines. - * @update vidur 12/11/98 - * - * NS_ERROR_HTMLPARSER_BLOCK indicates that the parser should - * block further parsing until it gets a Unblock() method call. - * NS_ERROR_HTMLPARSER_CONTINUE indicates that the parser should - * continue parsing - */ -#define NS_ERROR_HTMLPARSER_BLOCK NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1008) -#define NS_ERROR_HTMLPARSER_CONTINUE NS_OK +#define NS_ERROR_HTMLPARSER_CONTINUE NS_OK const PRInt32 kEOF = NS_ERROR_HTMLPARSER_EOF; diff --git a/mozilla/htmlparser/src/nsParser.cpp b/mozilla/htmlparser/src/nsParser.cpp index d198197c234..f0be71ab691 100644 --- a/mozilla/htmlparser/src/nsParser.cpp +++ b/mozilla/htmlparser/src/nsParser.cpp @@ -128,13 +128,51 @@ public: nsString nsParser::gHackMetaCharset = ""; nsString nsParser::gHackMetaCharsetURL = ""; -//---------------------------------------- +//------------------------------------------------------------------------- CSharedParserObjects& GetSharedObjects() { static CSharedParserObjects gSharedParserObjects; return gSharedParserObjects; } + +/********************************************************************************** + This class is used as an interface between an external agent (like the DOM) and + the parser. It will contain a stack full of tagnames, which is used in our + parser/paste API's. + **********************************************************************************/ + +class nsTagStack : public nsITagStack { +public: + nsTagStack() : nsITagStack(), mTags(0) { + } + + virtual void Push(PRUnichar* aTag){ + mTags.Push(aTag); + } + + virtual PRUnichar* Pop(void){ + PRUnichar* result=(PRUnichar*)mTags.Pop(); + return result; + } + + virtual PRUnichar* TagAt(PRUint32 anIndex){ + PRUnichar* result=0; + if(anIndex<(PRUint32)mTags.GetSize()) + result=(PRUnichar*)mTags.ObjectAt(anIndex); + return result; + } + + virtual PRUint32 GetSize(void){ + return mTags.GetSize(); + } + + nsDeque mTags; //will hold a deque of prunichars... +}; + + +//------------------------------------------------------------------------- + /** * default constructor * @@ -1135,32 +1173,15 @@ void nsParser::DebugDumpSource(ostream& aStream) { } } - -/********************************************************************************** - This class is used as an interface between an external agent (like the DOM) and - the parser. It will contain a stack full of tagnames, which is used in our - parser/paste API's. - **********************************************************************************/ - -nsTagStack::nsTagStack() : nsITagStack(), mTags(0) { -} - -void nsTagStack::Push(PRUnichar* aTag) { - mTags.Push(aTag); -} - -PRUnichar* nsTagStack::Pop(void) { - PRUnichar* result=(PRUnichar*)mTags.Pop(); - return result; -} - -PRUnichar* nsTagStack::TagAt(PRUint32 anIndex) { - PRUnichar* result=0; - if(anIndex<(PRUint32)mTags.GetSize()) - result=(PRUnichar*)mTags.ObjectAt(anIndex); - return result; -} - -PRUint32 nsTagStack::GetSize(void) { - return mTags.GetSize(); +/** + * Call this to get a newly constructed tagstack + * @update gess 5/05/99 + * @param aTagStack is an out parm that will contain your result + * @return NS_OK if successful, or NS_HTMLPARSER_MEMORY_ERROR on error + */ +nsresult nsParser::CreateTagStack(nsITagStack** aTagStack){ + *aTagStack=new nsTagStack(); + if(*aTagStack) + return NS_OK; + return NS_ERROR_HTMLPARSER_MEMORYFAILURE; } diff --git a/mozilla/htmlparser/src/nsParser.h b/mozilla/htmlparser/src/nsParser.h index e88044451bc..1138c2dff20 100644 --- a/mozilla/htmlparser/src/nsParser.h +++ b/mozilla/htmlparser/src/nsParser.h @@ -251,6 +251,14 @@ friend class CTokenHandler; */ virtual nsITokenizer* GetTokenizer(void); + /** + * Call this to get a newly constructed tagstack + * @update gess 5/05/99 + * @param aTagStack is an out parm that will contain your result + * @return NS_OK if successful, or NS_HTMLPARSER_MEMORY_ERROR on error + */ + virtual nsresult CreateTagStack(nsITagStack** aTagStack); + /* * The following two should be removed once our Meta Charset work complete */ @@ -346,18 +354,5 @@ protected: }; -class nsTagStack : public nsITagStack { -public: - nsTagStack(); - virtual void Push(PRUnichar* aTag); - virtual PRUnichar* Pop(void); - virtual PRUnichar* TagAt(PRUint32 anIndex); - virtual PRUint32 GetSize(void); - - nsDeque mTags; //will hold a deque of prunichars... -}; - - - #endif diff --git a/mozilla/parser/htmlparser/src/nsIParser.h b/mozilla/parser/htmlparser/src/nsIParser.h index cc688a2a192..58f03895ecd 100644 --- a/mozilla/parser/htmlparser/src/nsIParser.h +++ b/mozilla/parser/htmlparser/src/nsIParser.h @@ -83,7 +83,7 @@ enum eStreamState {eNone,eOnStart,eOnDataAvail,eOnStop}; class nsITagStack { public: virtual void Push(PRUnichar* aTag)=0; - virtual PRUnichar* Pop(PRUnichar* aTag)=0; + virtual PRUnichar* Pop(void)=0; virtual PRUnichar* TagAt(PRUint32 anIndex)=0; virtual PRUint32 GetSize(void)=0; }; @@ -147,6 +147,13 @@ class nsIParser : public nsISupports { */ virtual void SetDocumentCharset(nsString& aCharset, nsCharsetSource aSource)=0; + /** + * Call this to get a newly constructed tagstack + * @update gess 5/05/99 + * @param aTagStack is an out parm that will contain your result + * @return NS_OK if successful, or NS_HTMLPARSER_MEMORY_ERROR on error + */ + virtual nsresult CreateTagStack(nsITagStack** aTagStack)=0; /****************************************************************************************** @@ -198,23 +205,14 @@ class nsIParser : public nsISupports { #define NS_ERROR_HTMLPARSER_BADURL NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1005) #define NS_ERROR_HTMLPARSER_INVALIDPARSERCONTEXT NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1006) #define NS_ERROR_HTMLPARSER_INTERRUPTED NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1007) -#define NS_ERROR_HTMLPARSER_BADTOKENIZER NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1008) -#define NS_ERROR_HTMLPARSER_BADATTRIBUTE NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1009) -#define NS_ERROR_HTMLPARSER_UNRESOLVEDDTD NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1010) -#define NS_ERROR_HTMLPARSER_MISPLACED NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1011) +#define NS_ERROR_HTMLPARSER_BLOCK NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1008) +#define NS_ERROR_HTMLPARSER_BADTOKENIZER NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1009) +#define NS_ERROR_HTMLPARSER_BADATTRIBUTE NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1010) +#define NS_ERROR_HTMLPARSER_UNRESOLVEDDTD NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1011) +#define NS_ERROR_HTMLPARSER_MISPLACED NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1012) +#define NS_ERROR_HTMLPARSER_MEMORYFAILURE NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1013) - -/** - * Return codes for parsing routines. - * @update vidur 12/11/98 - * - * NS_ERROR_HTMLPARSER_BLOCK indicates that the parser should - * block further parsing until it gets a Unblock() method call. - * NS_ERROR_HTMLPARSER_CONTINUE indicates that the parser should - * continue parsing - */ -#define NS_ERROR_HTMLPARSER_BLOCK NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_HTMLPARSER,1008) -#define NS_ERROR_HTMLPARSER_CONTINUE NS_OK +#define NS_ERROR_HTMLPARSER_CONTINUE NS_OK const PRInt32 kEOF = NS_ERROR_HTMLPARSER_EOF; diff --git a/mozilla/parser/htmlparser/src/nsParser.cpp b/mozilla/parser/htmlparser/src/nsParser.cpp index d198197c234..f0be71ab691 100644 --- a/mozilla/parser/htmlparser/src/nsParser.cpp +++ b/mozilla/parser/htmlparser/src/nsParser.cpp @@ -128,13 +128,51 @@ public: nsString nsParser::gHackMetaCharset = ""; nsString nsParser::gHackMetaCharsetURL = ""; -//---------------------------------------- +//------------------------------------------------------------------------- CSharedParserObjects& GetSharedObjects() { static CSharedParserObjects gSharedParserObjects; return gSharedParserObjects; } + +/********************************************************************************** + This class is used as an interface between an external agent (like the DOM) and + the parser. It will contain a stack full of tagnames, which is used in our + parser/paste API's. + **********************************************************************************/ + +class nsTagStack : public nsITagStack { +public: + nsTagStack() : nsITagStack(), mTags(0) { + } + + virtual void Push(PRUnichar* aTag){ + mTags.Push(aTag); + } + + virtual PRUnichar* Pop(void){ + PRUnichar* result=(PRUnichar*)mTags.Pop(); + return result; + } + + virtual PRUnichar* TagAt(PRUint32 anIndex){ + PRUnichar* result=0; + if(anIndex<(PRUint32)mTags.GetSize()) + result=(PRUnichar*)mTags.ObjectAt(anIndex); + return result; + } + + virtual PRUint32 GetSize(void){ + return mTags.GetSize(); + } + + nsDeque mTags; //will hold a deque of prunichars... +}; + + +//------------------------------------------------------------------------- + /** * default constructor * @@ -1135,32 +1173,15 @@ void nsParser::DebugDumpSource(ostream& aStream) { } } - -/********************************************************************************** - This class is used as an interface between an external agent (like the DOM) and - the parser. It will contain a stack full of tagnames, which is used in our - parser/paste API's. - **********************************************************************************/ - -nsTagStack::nsTagStack() : nsITagStack(), mTags(0) { -} - -void nsTagStack::Push(PRUnichar* aTag) { - mTags.Push(aTag); -} - -PRUnichar* nsTagStack::Pop(void) { - PRUnichar* result=(PRUnichar*)mTags.Pop(); - return result; -} - -PRUnichar* nsTagStack::TagAt(PRUint32 anIndex) { - PRUnichar* result=0; - if(anIndex<(PRUint32)mTags.GetSize()) - result=(PRUnichar*)mTags.ObjectAt(anIndex); - return result; -} - -PRUint32 nsTagStack::GetSize(void) { - return mTags.GetSize(); +/** + * Call this to get a newly constructed tagstack + * @update gess 5/05/99 + * @param aTagStack is an out parm that will contain your result + * @return NS_OK if successful, or NS_HTMLPARSER_MEMORY_ERROR on error + */ +nsresult nsParser::CreateTagStack(nsITagStack** aTagStack){ + *aTagStack=new nsTagStack(); + if(*aTagStack) + return NS_OK; + return NS_ERROR_HTMLPARSER_MEMORYFAILURE; } diff --git a/mozilla/parser/htmlparser/src/nsParser.h b/mozilla/parser/htmlparser/src/nsParser.h index e88044451bc..1138c2dff20 100644 --- a/mozilla/parser/htmlparser/src/nsParser.h +++ b/mozilla/parser/htmlparser/src/nsParser.h @@ -251,6 +251,14 @@ friend class CTokenHandler; */ virtual nsITokenizer* GetTokenizer(void); + /** + * Call this to get a newly constructed tagstack + * @update gess 5/05/99 + * @param aTagStack is an out parm that will contain your result + * @return NS_OK if successful, or NS_HTMLPARSER_MEMORY_ERROR on error + */ + virtual nsresult CreateTagStack(nsITagStack** aTagStack); + /* * The following two should be removed once our Meta Charset work complete */ @@ -346,18 +354,5 @@ protected: }; -class nsTagStack : public nsITagStack { -public: - nsTagStack(); - virtual void Push(PRUnichar* aTag); - virtual PRUnichar* Pop(void); - virtual PRUnichar* TagAt(PRUint32 anIndex); - virtual PRUint32 GetSize(void); - - nsDeque mTags; //will hold a deque of prunichars... -}; - - - #endif