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]