Fixed some warnings, slight rework of the taghandling classes.

This commit is contained in:
dcone%netscape.com 1998-11-20 15:38:18 +00:00
parent 2ca4f27e3e
commit e6eb645ff6
6 changed files with 102 additions and 96 deletions

View File

@ -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());

View File

@ -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;
};

View File

@ -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;};

View File

@ -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());

View File

@ -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;
};

View File

@ -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;};