Commit 573e309e authored by dcone%netscape.com's avatar dcone%netscape.com
Browse files

Updated and tested the taghandling finding mechanism

parent d6a65c02
Loading
Loading
Loading
Loading
+24 −13
Original line number Diff line number Diff line
@@ -116,24 +116,28 @@ public:
 ***************************************************************/
class CTagFinder: public nsDequeFunctor{
public:
  CTagFinder(nsAutoString* aTagName) {
  }
  CTagFinder(){mTagName = nsnull;}
  void Initialize(nsAutoString* aTagName) {mTagName = aTagName;}

  virtual ~CTagFinder() {
  }

  virtual void* operator()(void* anObject) {
  virtual void* operator()(void* anObject) 
  {
  nsITagHandler* thetaghandler;
  nsAutoString  *thestring;

    mCurTagHandler = 0;
    if( ((nsITagHandler*)anObject)->GetString()== mTagName){
      mCurTagHandler = (nsITagHandler*)anObject;
      return 0;
    //mCurTagHandler = 0;
    thestring = ((nsITagHandler*)anObject)->GetString();
    if( thestring->Equals(*mTagName)){
      //thetaghandler = (nsITagHandler*)anObject;
      return anObject;
      }
    return(anObject); 
    return(0); 
   }

  nsAutoString*  mTagName;
  nsITagHandler* mCurTagHandler;
  //nsITagHandler* mCurTagHandler;
};

/***************************************************************
@@ -156,19 +160,20 @@ public:
  }
  
  nsITagHandler*  FindTagHandler(nsAutoString* aTagName){
    nsITagHandler *foundhandler = nsnull;
    mTagFinder.Initialize(aTagName);
    mTagHandlerDeque.Begin();

    return 0;
    foundhandler = (nsITagHandler*) mTagHandlerDeque.FirstThat(mTagFinder);
    return foundhandler;
  }

  CTagHandlerDeallocator  mDeallocator;
  nsDeque                 mTagHandlerDeque;
  CTagFinder              mTagFinder;

};




CTagHandlerRegister gTagHandlerRegister;


@@ -330,6 +335,7 @@ CNavDTD::CNavDTD() : nsIDTD(), mTokenDeque(gTokenKiller) {
  mBodyContext=new nsDTDContext();
  mFormContext=0;
  mMapContext=0;

}

/**
@@ -480,6 +486,11 @@ 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());
+2 −2
Original line number Diff line number Diff line
@@ -54,9 +54,9 @@ public:
  /**
   * SetString
   */
  void SetString(nsAutoString *aTheString) {}
  void SetString(nsAutoString *aTheString) {mTheTagName = *aTheString;}

  nsAutoString* GetString() {return 0;}
  nsAutoString* GetString() {return &mTheTagName;}

  /**
   *  Handle this token prior to the DTD
+24 −13
Original line number Diff line number Diff line
@@ -116,24 +116,28 @@ public:
 ***************************************************************/
class CTagFinder: public nsDequeFunctor{
public:
  CTagFinder(nsAutoString* aTagName) {
  }
  CTagFinder(){mTagName = nsnull;}
  void Initialize(nsAutoString* aTagName) {mTagName = aTagName;}

  virtual ~CTagFinder() {
  }

  virtual void* operator()(void* anObject) {
  virtual void* operator()(void* anObject) 
  {
  nsITagHandler* thetaghandler;
  nsAutoString  *thestring;

    mCurTagHandler = 0;
    if( ((nsITagHandler*)anObject)->GetString()== mTagName){
      mCurTagHandler = (nsITagHandler*)anObject;
      return 0;
    //mCurTagHandler = 0;
    thestring = ((nsITagHandler*)anObject)->GetString();
    if( thestring->Equals(*mTagName)){
      //thetaghandler = (nsITagHandler*)anObject;
      return anObject;
      }
    return(anObject); 
    return(0); 
   }

  nsAutoString*  mTagName;
  nsITagHandler* mCurTagHandler;
  //nsITagHandler* mCurTagHandler;
};

/***************************************************************
@@ -156,19 +160,20 @@ public:
  }
  
  nsITagHandler*  FindTagHandler(nsAutoString* aTagName){
    nsITagHandler *foundhandler = nsnull;
    mTagFinder.Initialize(aTagName);
    mTagHandlerDeque.Begin();

    return 0;
    foundhandler = (nsITagHandler*) mTagHandlerDeque.FirstThat(mTagFinder);
    return foundhandler;
  }

  CTagHandlerDeallocator  mDeallocator;
  nsDeque                 mTagHandlerDeque;
  CTagFinder              mTagFinder;

};




CTagHandlerRegister gTagHandlerRegister;


@@ -330,6 +335,7 @@ CNavDTD::CNavDTD() : nsIDTD(), mTokenDeque(gTokenKiller) {
  mBodyContext=new nsDTDContext();
  mFormContext=0;
  mMapContext=0;

}

/**
@@ -480,6 +486,11 @@ 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());
+2 −2
Original line number Diff line number Diff line
@@ -54,9 +54,9 @@ public:
  /**
   * SetString
   */
  void SetString(nsAutoString *aTheString) {}
  void SetString(nsAutoString *aTheString) {mTheTagName = *aTheString;}

  nsAutoString* GetString() {return 0;}
  nsAutoString* GetString() {return &mTheTagName;}

  /**
   *  Handle this token prior to the DTD