diff --git a/mozilla/htmlparser/src/CNavDTD.cpp b/mozilla/htmlparser/src/CNavDTD.cpp index d7564d27800..a2458e86a7b 100644 --- a/mozilla/htmlparser/src/CNavDTD.cpp +++ b/mozilla/htmlparser/src/CNavDTD.cpp @@ -103,8 +103,8 @@ static CTokenRecycler gTokenRecycler; ***************************************************************/ class CTagHandlerDeallocator: public nsDequeFunctor{ public: - virtual void* operator()(void* anObject) { - nsITagHandler* tagHandler =(nsITagHandler*)anObject; + virtual void* operator()(void* aObject) { + nsITagHandler* tagHandler = (nsITagHandler*)aObject; delete tagHandler; return 0; } @@ -115,29 +115,23 @@ public: check for a Tag name, and setting the current TagHandler when it is reached ***************************************************************/ class CTagFinder: public nsDequeFunctor{ + public: - CTagFinder(){mTagName = nsnull;} - void Initialize(nsAutoString* aTagName) {mTagName = aTagName;} + CTagFinder(){} + void Initialize(const nsString &aTagName) {mTagName = aTagName;} virtual ~CTagFinder() { } - virtual void* operator()(void* anObject) - { - nsITagHandler* thetaghandler; - nsAutoString *thestring; - - //mCurTagHandler = 0; - thestring = ((nsITagHandler*)anObject)->GetString(); - if( thestring->Equals(*mTagName)){ - //thetaghandler = (nsITagHandler*)anObject; - return anObject; - } + virtual void* operator()(void* aObject) { + nsString* theString = ((nsITagHandler*)aObject)->GetString(); + if( theString->Equals(mTagName)){ + return aObject; + } return(0); - } + } - nsAutoString* mTagName; - //nsITagHandler* mCurTagHandler; + nsAutoString mTagName; }; /*************************************************************** @@ -151,29 +145,32 @@ public: CTagHandlerRegister() : mDeallocator(), mTagHandlerDeque(mDeallocator) { } - ~CTagHandlerRegister() { - } - void RegisterTagHandler(nsAutoString *aTagName,nsITagHandler *aTagHandler){ - aTagHandler->SetString(aTagName); + void RegisterTagHandler(nsITagHandler *aTagHandler){ mTagHandlerDeque.Push(aTagHandler); } - nsITagHandler* FindTagHandler(nsAutoString* aTagName){ - nsITagHandler *foundhandler = nsnull; + nsITagHandler* FindTagHandler(const nsString &aTagName){ + nsITagHandler* foundHandler = nsnull; + mTagFinder.Initialize(aTagName); mTagHandlerDeque.Begin(); - foundhandler = (nsITagHandler*) mTagHandlerDeque.FirstThat(mTagFinder); - return foundhandler; + foundHandler = (nsITagHandler*) mTagHandlerDeque.FirstThat(mTagFinder); + return foundHandler; } CTagHandlerDeallocator mDeallocator; nsDeque mTagHandlerDeque; CTagFinder mTagFinder; - }; +/************************************************************************ + The CTagHandlerRegister for a CNavDTD. + This is where special taghanders for our tags can be managed and called from + Note: This can also be attached to some object so it can be refcounted + and destroyed if you want this to go away when not imbedded. + ************************************************************************/ CTagHandlerRegister gTagHandlerRegister; @@ -486,11 +483,6 @@ nsresult CNavDTD::DidBuildModel(PRInt32 anErrorCode,PRBool aNotifySink){ nsresult CNavDTD::HandleToken(CToken* aToken){ nsresult result=NS_OK; - // test and example of finding the tag handler - //nsAutoString* findstring = new nsAutoString(aToken->GetStringValueXXX()); - //nsITagHandler* taghandler = gTagHandlerRegister.FindTagHandler(findstring); - - if(aToken) { CHTMLToken* theToken= (CHTMLToken*)(aToken); eHTMLTokenTypes theType=eHTMLTokenTypes(theToken->GetTokenType()); diff --git a/mozilla/htmlparser/src/nsDTDUtils.h b/mozilla/htmlparser/src/nsDTDUtils.h index cfa876ba0b9..07c2b879c1b 100644 --- a/mozilla/htmlparser/src/nsDTDUtils.h +++ b/mozilla/htmlparser/src/nsDTDUtils.h @@ -150,8 +150,8 @@ protected: class nsITagHandler { public: - virtual void SetString(nsAutoString *aTheString)=0; - virtual nsAutoString* GetString()=0; + virtual void SetString(const nsString &aTheString)=0; + virtual nsString* GetString()=0; virtual PRBool HandleToken(CToken* aToken,nsIDTD* aDTD)=0; virtual PRBool HandleCapturedTokens(CToken* aToken,nsIDTD* aDTD)=0; }; diff --git a/mozilla/htmlparser/src/nsTagHandler.h b/mozilla/htmlparser/src/nsTagHandler.h index 68870a1933e..9ad87bea6a9 100644 --- a/mozilla/htmlparser/src/nsTagHandler.h +++ b/mozilla/htmlparser/src/nsTagHandler.h @@ -24,50 +24,61 @@ /** * MODULE NOTES: - * @update DC 11/5/98 + * @update dc 11/20/98 **/ /** - * This class defines the object that can do special tag handling + * This class defines an object that can do special tag handling * - * @update DC 11/5/98 + * @update DC 11/20/98 */ class nsTagHandler : public nsITagHandler { -// MEMBERS public: nsAutoString mTheTagName; - -// METHODS public: /** * Constructor - * @update dc 11/5/98 + * @update dc 11/05/98 */ nsTagHandler() {} + + /** + * Destructor + * @update dc 11/05/98 + */ ~nsTagHandler() {} /** - * SetString + * Sets the string (tag) for this nsTagHandler to handle + * @update dc 11/19/98 + * @param aTheString -- The string (tag) associated with this handler + * @return VOID */ - void SetString(nsAutoString *aTheString) {mTheTagName = *aTheString;} - - nsAutoString* GetString() {return &mTheTagName;} + void SetString(const nsString &aTheString) {mTheTagName = aTheString;} /** - * Handle this token prior to the DTD + * Returns the string (tag) handled by this nsTagHandler + * @update dc 11/19/98 + * @return The tagname associated with this class + */ + nsString* GetString() {return &mTheTagName;} + + /** + * Handle this tag prior to the DTD * @update dc 11/5/98 + * @return A boolean indicating if this token was handled here */ virtual PRBool HandleToken(CToken* aToken,nsIDTD* aDTD) {return PR_FALSE;}; /** - * Handle this token prior to the DTD + * Handle this tag prior to the DTD * @update dc 11/5/98 - * @return ptr to previously set contentsink (usually null) + * @return A boolean indicating if this token was handled here */ virtual PRBool HandleCapturedTokens(CToken* aToken,nsIDTD* aDTD) {return PR_FALSE;}; diff --git a/mozilla/parser/htmlparser/src/CNavDTD.cpp b/mozilla/parser/htmlparser/src/CNavDTD.cpp index d7564d27800..a2458e86a7b 100644 --- a/mozilla/parser/htmlparser/src/CNavDTD.cpp +++ b/mozilla/parser/htmlparser/src/CNavDTD.cpp @@ -103,8 +103,8 @@ static CTokenRecycler gTokenRecycler; ***************************************************************/ class CTagHandlerDeallocator: public nsDequeFunctor{ public: - virtual void* operator()(void* anObject) { - nsITagHandler* tagHandler =(nsITagHandler*)anObject; + virtual void* operator()(void* aObject) { + nsITagHandler* tagHandler = (nsITagHandler*)aObject; delete tagHandler; return 0; } @@ -115,29 +115,23 @@ public: check for a Tag name, and setting the current TagHandler when it is reached ***************************************************************/ class CTagFinder: public nsDequeFunctor{ + public: - CTagFinder(){mTagName = nsnull;} - void Initialize(nsAutoString* aTagName) {mTagName = aTagName;} + CTagFinder(){} + void Initialize(const nsString &aTagName) {mTagName = aTagName;} virtual ~CTagFinder() { } - virtual void* operator()(void* anObject) - { - nsITagHandler* thetaghandler; - nsAutoString *thestring; - - //mCurTagHandler = 0; - thestring = ((nsITagHandler*)anObject)->GetString(); - if( thestring->Equals(*mTagName)){ - //thetaghandler = (nsITagHandler*)anObject; - return anObject; - } + virtual void* operator()(void* aObject) { + nsString* theString = ((nsITagHandler*)aObject)->GetString(); + if( theString->Equals(mTagName)){ + return aObject; + } return(0); - } + } - nsAutoString* mTagName; - //nsITagHandler* mCurTagHandler; + nsAutoString mTagName; }; /*************************************************************** @@ -151,29 +145,32 @@ public: CTagHandlerRegister() : mDeallocator(), mTagHandlerDeque(mDeallocator) { } - ~CTagHandlerRegister() { - } - void RegisterTagHandler(nsAutoString *aTagName,nsITagHandler *aTagHandler){ - aTagHandler->SetString(aTagName); + void RegisterTagHandler(nsITagHandler *aTagHandler){ mTagHandlerDeque.Push(aTagHandler); } - nsITagHandler* FindTagHandler(nsAutoString* aTagName){ - nsITagHandler *foundhandler = nsnull; + nsITagHandler* FindTagHandler(const nsString &aTagName){ + nsITagHandler* foundHandler = nsnull; + mTagFinder.Initialize(aTagName); mTagHandlerDeque.Begin(); - foundhandler = (nsITagHandler*) mTagHandlerDeque.FirstThat(mTagFinder); - return foundhandler; + foundHandler = (nsITagHandler*) mTagHandlerDeque.FirstThat(mTagFinder); + return foundHandler; } CTagHandlerDeallocator mDeallocator; nsDeque mTagHandlerDeque; CTagFinder mTagFinder; - }; +/************************************************************************ + The CTagHandlerRegister for a CNavDTD. + This is where special taghanders for our tags can be managed and called from + Note: This can also be attached to some object so it can be refcounted + and destroyed if you want this to go away when not imbedded. + ************************************************************************/ CTagHandlerRegister gTagHandlerRegister; @@ -486,11 +483,6 @@ nsresult CNavDTD::DidBuildModel(PRInt32 anErrorCode,PRBool aNotifySink){ nsresult CNavDTD::HandleToken(CToken* aToken){ nsresult result=NS_OK; - // test and example of finding the tag handler - //nsAutoString* findstring = new nsAutoString(aToken->GetStringValueXXX()); - //nsITagHandler* taghandler = gTagHandlerRegister.FindTagHandler(findstring); - - if(aToken) { CHTMLToken* theToken= (CHTMLToken*)(aToken); eHTMLTokenTypes theType=eHTMLTokenTypes(theToken->GetTokenType()); diff --git a/mozilla/parser/htmlparser/src/nsDTDUtils.h b/mozilla/parser/htmlparser/src/nsDTDUtils.h index cfa876ba0b9..07c2b879c1b 100644 --- a/mozilla/parser/htmlparser/src/nsDTDUtils.h +++ b/mozilla/parser/htmlparser/src/nsDTDUtils.h @@ -150,8 +150,8 @@ protected: class nsITagHandler { public: - virtual void SetString(nsAutoString *aTheString)=0; - virtual nsAutoString* GetString()=0; + virtual void SetString(const nsString &aTheString)=0; + virtual nsString* GetString()=0; virtual PRBool HandleToken(CToken* aToken,nsIDTD* aDTD)=0; virtual PRBool HandleCapturedTokens(CToken* aToken,nsIDTD* aDTD)=0; }; diff --git a/mozilla/parser/htmlparser/src/nsTagHandler.h b/mozilla/parser/htmlparser/src/nsTagHandler.h index 68870a1933e..9ad87bea6a9 100644 --- a/mozilla/parser/htmlparser/src/nsTagHandler.h +++ b/mozilla/parser/htmlparser/src/nsTagHandler.h @@ -24,50 +24,61 @@ /** * MODULE NOTES: - * @update DC 11/5/98 + * @update dc 11/20/98 **/ /** - * This class defines the object that can do special tag handling + * This class defines an object that can do special tag handling * - * @update DC 11/5/98 + * @update DC 11/20/98 */ class nsTagHandler : public nsITagHandler { -// MEMBERS public: nsAutoString mTheTagName; - -// METHODS public: /** * Constructor - * @update dc 11/5/98 + * @update dc 11/05/98 */ nsTagHandler() {} + + /** + * Destructor + * @update dc 11/05/98 + */ ~nsTagHandler() {} /** - * SetString + * Sets the string (tag) for this nsTagHandler to handle + * @update dc 11/19/98 + * @param aTheString -- The string (tag) associated with this handler + * @return VOID */ - void SetString(nsAutoString *aTheString) {mTheTagName = *aTheString;} - - nsAutoString* GetString() {return &mTheTagName;} + void SetString(const nsString &aTheString) {mTheTagName = aTheString;} /** - * Handle this token prior to the DTD + * Returns the string (tag) handled by this nsTagHandler + * @update dc 11/19/98 + * @return The tagname associated with this class + */ + nsString* GetString() {return &mTheTagName;} + + /** + * Handle this tag prior to the DTD * @update dc 11/5/98 + * @return A boolean indicating if this token was handled here */ virtual PRBool HandleToken(CToken* aToken,nsIDTD* aDTD) {return PR_FALSE;}; /** - * Handle this token prior to the DTD + * Handle this tag prior to the DTD * @update dc 11/5/98 - * @return ptr to previously set contentsink (usually null) + * @return A boolean indicating if this token was handled here */ virtual PRBool HandleCapturedTokens(CToken* aToken,nsIDTD* aDTD) {return PR_FALSE;};