richter     01/10/25 23:19:28

  Modified:    .        Tag: Embperl2c epdom.c epdom.h
               test/html Tag: Embperl2c table.htm
  Log:
  Embperl - tree structure rewrite
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.4.2.59  +64 -12    embperl/Attic/epdom.c
  
  Index: epdom.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epdom.c,v
  retrieving revision 1.4.2.58
  retrieving revision 1.4.2.59
  diff -u -r1.4.2.58 -r1.4.2.59
  --- epdom.c   2001/10/25 14:49:01     1.4.2.58
  +++ epdom.c   2001/10/26 06:19:27     1.4.2.59
  @@ -9,7 +9,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epdom.c,v 1.4.2.58 2001/10/25 14:49:01 richter Exp $
  +#   $Id: epdom.c,v 1.4.2.59 2001/10/26 06:19:27 richter Exp $
   #
   
###################################################################################*/
   
  @@ -1117,8 +1117,9 @@
       tDomTreeCheckpoint * pCheckpoints = pDomTree -> pCheckpoints ;
       tDomTreeCheckpointStatus * pCheckpointStatus =  &pDomTree -> 
pCheckpointStatus[nRunCheckpoint] ;
   
  -    pCheckpointStatus -> nRepeatLevel = r -> nCurrRepeatLevel ;
  +    pCheckpointStatus -> nRepeatLevel       = r -> nCurrRepeatLevel ;
       pCheckpointStatus -> nCompileCheckpoint = nCompileCheckpoint ;
  +    pCheckpointStatus -> xJumpFromNode      = 0 ;
   
       if (nRunCheckpoint == nCompileCheckpoint)
           {
  @@ -1170,16 +1171,34 @@
               pPrevNode -> xNext = pRunNode -> xNdx ;
   
               if (pCurrReq -> bDebug & dbgCheckpoint)
  -             lprintf (pCurrReq, "[%d]Checkpoint: jump forward DomTree=%d Index=%d 
Node=%d Line=%d -> Index=%d Node=%d Line=%d SVs=%d\n", pCurrReq -> nPid, r -> 
xCurrDomTree, nCompileCheckpoint, pPrevNode -> xNdx, pPrevNode -> nLinenumber, 
nRunCheckpoint, pRunNode -> xNdx, pRunNode -> nLinenumber, sv_count) ; 
  -
  -            
  +                 lprintf (pCurrReq, "[%d]Checkpoint: jump forward DomTree=%d 
Index=%d Node=%d(%d) Line=%d -> Index=%d Node=%d(%d) Line=%d SVs=%d\n", 
  +                         pCurrReq -> nPid, r -> xCurrDomTree, nCompileCheckpoint, 
  +                         pPrevNode -> xNdx,  
xNode_selfLevelNull(pDomTree,pPrevNode), 
  +                         pPrevNode -> nLinenumber, nRunCheckpoint, 
  +                         pRunNode -> xNdx,  xNode_selfLevelNull(pDomTree,pRunNode), 
  +                         pRunNode -> nLinenumber, sv_count) ; 
  +           
               }
           else if (pCompileParent && pRunParent)
               {
               tNodeData * pCompileParent2 = NodeAttr_selfParentNode (pDomTree, 
pCompileParent, r -> nCurrRepeatLevel) ;
               tNodeData * pRunParent2     = NodeAttr_selfParentNode (pDomTree, 
pRunParent, r -> nCurrRepeatLevel) ;
   
  -            if (pCompileParent2 == pRunParent2)
  +            if (pCompileParent2 -> xNdx == pRunParent -> xNdx)
  +             {
  +             pPrevNode = Node_selfCondCloneNode (pDomTree, pCompileParent, r -> 
nCurrRepeatLevel) ;
  +             pRunNode -> xPrev = pPrevNode -> xNdx ;
  +             pPrevNode -> xNext = pRunNode -> xNdx ;
  +
  +             if (pCurrReq -> bDebug & dbgCheckpoint)
  +                 lprintf (pCurrReq, "[%d]Checkpoint: jump forward last child 
DomTree=%d Index=%d Node=%d(%d) Line=%d -> Index=%d Node=%d(%d) Line=%d SVs=%d\n", 
  +                         pCurrReq -> nPid, r -> xCurrDomTree, nCompileCheckpoint, 
  +                         pPrevNode -> xNdx,  
xNode_selfLevelNull(pDomTree,pPrevNode), 
  +                         pPrevNode -> nLinenumber, nRunCheckpoint, 
  +                         pRunNode -> xNdx,  xNode_selfLevelNull(pDomTree,pRunNode), 
  +                         pRunNode -> nLinenumber, sv_count) ; 
  +             }
  +            else if (pCompileParent2 == pRunParent2)
                   {
                if (pRunParent -> nType != ntypAttr && pCompileParent -> nType != 
ntypAttr) 
                    {
  @@ -1206,12 +1225,26 @@
   
                pPrevNode -> xNext = Node_selfFirstChild (pDomTree, pCompileParent, r 
-> nCurrRepeatLevel) -> xNdx ;
                   if (pCurrReq -> bDebug & dbgCheckpoint)
  -                 lprintf (pCurrReq, "[%d]Checkpoint: jump forward2 DomTree=%d 
Index=%d Node=%d,%d,%d Line=%d -> Index=%d Node=%d,%d,%d Line=%d SVs=%d\n", pCurrReq 
-> nPid, r -> xCurrDomTree, nCompileCheckpoint, pPrevNode -> xNdx, pCompileParent -> 
xNdx, pCompileParent2 -> xNdx, pPrevNode -> nLinenumber, nRunCheckpoint, pRunNode -> 
xNdx, pRunParent -> xNdx, pRunParent2 -> xNdx, pRunNode -> nLinenumber, sv_count) ; 
  +                    lprintf (pCurrReq, "[%d]Checkpoint: jump forward2 DomTree=%d 
Index=%d Node=%d(%d),%d,%d Line=%d -> Index=%d Node=%d(%d),%d,%d Line=%d SVs=%d\n", 
  +                                pCurrReq -> nPid, r -> xCurrDomTree, 
nCompileCheckpoint, 
  +                                pPrevNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pPrevNode), 
  +                                pCompileParent -> xNdx, 
pCompileParent2?pCompileParent2 -> xNdx:-1, 
  +                                pPrevNode -> nLinenumber, 
  +                                nRunCheckpoint, pRunNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pRunNode), 
  +                                pRunParent -> xNdx, pRunParent2?pRunParent2 -> 
xNdx:-1, 
  +                                pRunNode -> nLinenumber, sv_count) ; 
                   }
               else
                   {
                   if (pCurrReq -> bDebug & dbgCheckpoint)
  -                    lprintf (pCurrReq, "[%d]Checkpoint: jump forward2 DomTree=%d 
Index=%d Node=%d,%d,%d Line=%d -> Index=%d Node=%d,%d,%d Line=%d SVs=%d\n", pCurrReq 
-> nPid, r -> xCurrDomTree, nCompileCheckpoint, pPrevNode -> xNdx, pCompileParent -> 
xNdx, pCompileParent2?pCompileParent2 -> xNdx:-1, pPrevNode -> nLinenumber, 
nRunCheckpoint, pRunNode -> xNdx, pRunParent -> xNdx, pRunParent2?pRunParent2 -> 
xNdx:-1, pRunNode -> nLinenumber, sv_count) ; 
  +                    lprintf (pCurrReq, "[%d]Checkpoint: jump forward2 DomTree=%d 
Index=%d Node=%d(%d),%d,%d Line=%d -> Index=%d Node=%d(%d),%d,%d Line=%d SVs=%d\n", 
  +                                pCurrReq -> nPid, r -> xCurrDomTree, 
nCompileCheckpoint, 
  +                                pPrevNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pPrevNode), 
  +                                pCompileParent -> xNdx, 
pCompileParent2?pCompileParent2 -> xNdx:-1, 
  +                                pPrevNode -> nLinenumber, 
  +                                nRunCheckpoint, pRunNode -> xNdx, 
xNode_selfLevelNull(pDomTree,pRunNode), 
  +                                pRunParent -> xNdx, pRunParent2?pRunParent2 -> 
xNdx:-1, 
  +                                pRunNode -> nLinenumber, sv_count) ; 
       
                   mydie ("Unstrutured forward jump") ;
                   }
  @@ -1246,7 +1279,6 @@
           if (pCompileParent -> xNdx  == pRunParent -> xNdx)
               {
               r -> nCurrRepeatLevel++ ;            
  -            //Node_selfForceLevel (pDomTree, pPrevNode -> xNdx, r -> 
nCurrRepeatLevel) ; /* make sure we have a node that points out of the loop */
               pRunNode = Node_selfCondCloneNode (pDomTree, pRunNode, r -> 
nCurrRepeatLevel) ;
           
               pRunNode -> xPrev = pPrevNode -> xNdx ;
  @@ -1258,6 +1290,7 @@
               }
           else if (xNode_selfLevelNull(pDomTree,pPrevNode) == 
xNode_selfLevelNull(pDomTree,pRunParent))
               {
  +         /*
               if (pCurrReq -> bDebug & dbgCheckpoint)
                lprintf (pCurrReq, "[%d]Checkpoint: jump backward2 DomTree=%d Index=%d 
Node=%d(%d),%d(%d) Line=%d -> Index=%d Node=%d(%d),%d(%d) Line=%d SVs=%d\n", 
                            pCurrReq -> nPid, r -> xCurrDomTree, 
  @@ -1267,8 +1300,8 @@
                            nRunCheckpoint,     pRunNode -> xNdx,       
xNode_selfLevelNull(pDomTree,pRunNode),
                                                pRunParent -> xNdx,     
xNode_selfLevelNull(pDomTree,pRunParent),
                                                pRunNode -> nLinenumber, sv_count) ; 
  -            pPrevNode = Node_selfLastChild (pDomTree, pPrevNode, r -> 
nCurrRepeatLevel) ;
  -            //Node_selfForceLevel (pDomTree, pPrevNode -> xNdx, r -> 
nCurrRepeatLevel) ; /* make sure we have a node that points out of the loop */
  +            */
  +         pPrevNode = Node_selfLastChild (pDomTree, pPrevNode, r -> 
nCurrRepeatLevel) ;
               pPrevNode = Node_selfCondCloneNode (pDomTree, pPrevNode, r -> 
nCurrRepeatLevel) ;
           
               r -> nCurrRepeatLevel++ ;            
  @@ -1276,6 +1309,8 @@
               pRunNode = Node_selfCondCloneNode (pDomTree, pRunNode, r -> 
nCurrRepeatLevel) ;
               pRunNode -> xPrev = pPrevNode -> xNdx ;
               pPrevNode -> xNext = pRunNode -> xNdx ;
  +         pCheckpointStatus -> xJumpFromNode    = pPrevNode -> xNdx ;
  +         pCheckpointStatus -> xJumpToNode      = pRunNode -> xNdx ;
   
               if (pCurrReq -> bDebug & dbgCheckpoint)
                lprintf (pCurrReq, "[%d]Checkpoint: jump backward last child 
DomTree=%d Index=%d Node=%d(%d) RepeatLevel=%d Line=%d -> Index=%d Node=%d(%d) Line=%d 
SVs=%d\n", 
  @@ -1342,10 +1377,27 @@
   
       r -> nCurrRepeatLevel = pCheckpointStatus -> nRepeatLevel ;
       r -> nCurrCheckpoint  = pCheckpointStatus -> nCompileCheckpoint  ;
  -
  +    
       if (pCurrReq -> bDebug & dbgCheckpoint)
           lprintf (pCurrReq, "[%d]Checkpoint: discard all from checkpoint=%d 
DomTree=%d new RepeatLevel=%d new Checkpoint=%d\n",
                 pCurrReq -> nPid, nRunCheckpoint, r -> xCurrDomTree, r -> 
nCurrRepeatLevel, r -> nCurrCheckpoint) ; 
  +
  +    if (pCheckpointStatus -> xJumpFromNode)
  +     {
  +     tNodeData * pToChild    = Node_self (pDomTree,  pCheckpointStatus -> 
xJumpToNode) ;
  +     tNodeData * pLastChild  = Node_self (pDomTree,  pCheckpointStatus -> 
xJumpFromNode) ;
  +     tNodeData * pParent     = Node_self (pDomTree, pLastChild -> xParent) ;
  +     tNodeData * pFirstChild = Node_self (pDomTree, pParent -> xChilds) ;
  +
  +        pFirstChild = Node_selfCondCloneNode (pDomTree, pFirstChild, pFirstChild -> 
nRepeatLevel) ;
  +     pFirstChild -> xPrev = pLastChild -> xNdx ;
  +     pLastChild  -> xNext = pFirstChild -> xNdx ;
  +     pToChild  -> xPrev = pToChild -> xNdx ; /* mark this with no previous */
  +     if (pCurrReq -> bDebug & dbgCheckpoint)
  +         lprintf (pCurrReq, "[%d]Checkpoint: discard all from table   Parent=%d 
FirstChild=%d LastChild=%d\n",
  +                  pCurrReq -> nPid, pParent -> xNdx, pFirstChild -> xNdx, 
pLastChild -> xNdx) ; 
  +     }
  +
   
       }
       
  
  
  
  1.4.2.35  +3 -1      embperl/Attic/epdom.h
  
  Index: epdom.h
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epdom.h,v
  retrieving revision 1.4.2.34
  retrieving revision 1.4.2.35
  diff -u -r1.4.2.34 -r1.4.2.35
  --- epdom.h   2001/10/25 08:26:02     1.4.2.34
  +++ epdom.h   2001/10/26 06:19:28     1.4.2.35
  @@ -9,7 +9,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epdom.h,v 1.4.2.34 2001/10/25 08:26:02 richter Exp $
  +#   $Id: epdom.h,v 1.4.2.35 2001/10/26 06:19:28 richter Exp $
   #
   
###################################################################################*/
   
  @@ -170,6 +170,8 @@
       {
       tRepeatLevel    nRepeatLevel ;    /**< Repeatlevel when last passed this 
checkpoint */
       tIndex          nCompileCheckpoint ; /**< r -> nCurrCheckpoint when last passed 
this checkpoint */
  +    tNode        xJumpFromNode ;      /**< node from which backward jump started */
  +    tNode        xJumpToNode ;        /**< node to which backward jump was */
       } ;
   
   typedef struct tDomTreeCheckpointStatus tDomTreeCheckpointStatus ;
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.4.6.6   +1 -2      embperl/test/html/table.htm
  
  Index: table.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/table.htm,v
  retrieving revision 1.4.6.5
  retrieving revision 1.4.6.6
  diff -u -r1.4.6.5 -r1.4.6.6
  --- table.htm 2001/10/25 08:26:04     1.4.6.5
  +++ table.htm 2001/10/26 06:19:28     1.4.6.6
  @@ -85,7 +85,7 @@
       </tr> 
   </table>
   
  -[#<table>
  +<table>
       <tr>
           <td>[+ $c[$row] +]</td>
       </tr> 
  @@ -251,4 +251,3 @@
   
   </body>
   </html>
  -#]
  \ No newline at end of file
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to