You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@locus.apache.org on 2000/06/07 11:23:07 UTC
cvs commit: embperl/test/html lists.htm
richter 00/06/07 02:23:05
Modified: . Tag: Embperl2 Changes.pod Embperl.xs embpcgi.bat
embpcgi.pl embpcgi.test.bat embpcgi.test.pl
embpexec.bat embpexec.pl epcmd2.c epcomp.c epdom.c
epdom.h test.pl
test/cmp Tag: Embperl2 lists.htm
test/html Tag: Embperl2 lists.htm
Log:
Embperl 2 - Attr_value inside loops
Revision Changes Path
No revision
No revision
1.115.2.8 +3 -2 embperl/Changes.pod
Index: Changes.pod
===================================================================
RCS file: /home/cvs/embperl/Changes.pod,v
retrieving revision 1.115.2.7
retrieving revision 1.115.2.8
diff -u -r1.115.2.7 -r1.115.2.8
--- Changes.pod 2000/06/06 10:25:24 1.115.2.7
+++ Changes.pod 2000/06/07 09:22:52 1.115.2.8
@@ -31,13 +31,14 @@
- The following options are currently not supported:
optDisableHtmlScan, optDisableTableScan,
optDisableInputScan, optDisableMetaScan
- - Nesting must be properly. I.e. you cannot put a table tag (for an
- dynamic table) inside an if and the /table inside another if.
+ - Nesting must be properly. I.e. you cannot put a <table> tag (for an
+ dynamic table) inside an if and the </table> inside another if.
(That still works for static tables)
- optUndefToEmptyValue is always set and cannot be disabled.
- make test works with Apache that has mod_jserv compiled in
- [$ foreach $x (@x) $] requires now the bracket around the
array (like Perl)
+ - [* *] blocks works now as expected.
=head1 1.3b4_dev -- That's what currently under developement
1.26.2.18 +2 -2 embperl/Embperl.xs
Index: Embperl.xs
===================================================================
RCS file: /home/cvs/embperl/Embperl.xs,v
retrieving revision 1.26.2.17
retrieving revision 1.26.2.18
diff -u -r1.26.2.17 -r1.26.2.18
--- Embperl.xs 2000/06/05 13:55:57 1.26.2.17
+++ Embperl.xs 2000/06/07 09:22:52 1.26.2.18
@@ -782,7 +782,7 @@
char * sA = SV2String (sAttr, nAttr) ;
tDomTree * pDomTree = DomTree_self (xDomTree) ;
- Element_selfSetAttribut (pDomTree, Node_self (pDomTree, xNode), sA, nAttr, sT, nText) ;
+ Element_selfSetAttribut (pDomTree, Node_self (pDomTree, xNode), sA, nAttr, sT, nText, 1) ;
@@ -797,7 +797,7 @@
char * sA = SV2String (sAttr, nAttr) ;
tDomTree * pDomTree = DomTree_self (xDomTree) ;
- Element_selfRemoveAttribut (pDomTree, Node_self (pDomTree, xNode), sA, nAttr) ;
+ Element_selfRemoveAttribut (pDomTree, Node_self (pDomTree, xNode), sA, nAttr, 1) ;
SV *
1.7.2.5 +2 -2 embperl/embpcgi.bat
Index: embpcgi.bat
===================================================================
RCS file: /home/cvs/embperl/embpcgi.bat,v
retrieving revision 1.7.2.4
retrieving revision 1.7.2.5
diff -u -r1.7.2.4 -r1.7.2.5
--- embpcgi.bat 2000/06/06 14:39:11 1.7.2.4
+++ embpcgi.bat 2000/06/07 09:22:53 1.7.2.5
@@ -1,9 +1,9 @@
@rem = '--*-Perl-*--
@echo off
-/usr/bin/perl -x %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
+D:\Perl\5.00502\bin\MSWin32-x86\perl -x %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
@rem ';
-#!/usr/bin/perl --
+#!D:\Perl\5.00502\bin\MSWin32-x86\perl --
#line 8
###################################################################################
#
1.7.2.5 +1 -1 embperl/embpcgi.pl
Index: embpcgi.pl
===================================================================
RCS file: /home/cvs/embperl/embpcgi.pl,v
retrieving revision 1.7.2.4
retrieving revision 1.7.2.5
diff -u -r1.7.2.4 -r1.7.2.5
--- embpcgi.pl 2000/06/06 14:39:12 1.7.2.4
+++ embpcgi.pl 2000/06/07 09:22:53 1.7.2.5
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!D:\Perl\5.00502\bin\MSWin32-x86\perl
###################################################################################
#
# Embperl - Copyright (c) 1997-1999 Gerald Richter / ECOS
1.5.2.5 +2 -2 embperl/embpcgi.test.bat
Index: embpcgi.test.bat
===================================================================
RCS file: /home/cvs/embperl/embpcgi.test.bat,v
retrieving revision 1.5.2.4
retrieving revision 1.5.2.5
diff -u -r1.5.2.4 -r1.5.2.5
--- embpcgi.test.bat 2000/06/06 14:39:13 1.5.2.4
+++ embpcgi.test.bat 2000/06/07 09:22:53 1.5.2.5
@@ -1,9 +1,9 @@
@rem = '--*-Perl-*--
@echo off
-/usr/bin/perl -x -T %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
+D:\Perl\5.00502\bin\MSWin32-x86\perl -x -T %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
@rem ';
-#!/usr/bin/perl --
+#!D:\Perl\5.00502\bin\MSWin32-x86\perl --
#line 8
###################################################################################
#
1.7.2.5 +1 -1 embperl/embpcgi.test.pl
Index: embpcgi.test.pl
===================================================================
RCS file: /home/cvs/embperl/embpcgi.test.pl,v
retrieving revision 1.7.2.4
retrieving revision 1.7.2.5
diff -u -r1.7.2.4 -r1.7.2.5
--- embpcgi.test.pl 2000/06/06 14:39:13 1.7.2.4
+++ embpcgi.test.pl 2000/06/07 09:22:53 1.7.2.5
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!D:\Perl\5.00502\bin\MSWin32-x86\perl
###################################################################################
#
# Embperl - Copyright (c) 1997-1999 Gerald Richter / ECOS
1.18.2.5 +2 -2 embperl/embpexec.bat
Index: embpexec.bat
===================================================================
RCS file: /home/cvs/embperl/embpexec.bat,v
retrieving revision 1.18.2.4
retrieving revision 1.18.2.5
diff -u -r1.18.2.4 -r1.18.2.5
--- embpexec.bat 2000/06/06 14:39:13 1.18.2.4
+++ embpexec.bat 2000/06/07 09:22:54 1.18.2.5
@@ -1,9 +1,9 @@
@rem = '--*-Perl-*--
@echo off
-/usr/bin/perl -x %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
+D:\Perl\5.00502\bin\MSWin32-x86\perl -x %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
@rem ';
-#!/usr/bin/perl --
+#!D:\Perl\5.00502\bin\MSWin32-x86\perl --
#line 8
###################################################################################
#
1.18.2.5 +1 -1 embperl/embpexec.pl
Index: embpexec.pl
===================================================================
RCS file: /home/cvs/embperl/embpexec.pl,v
retrieving revision 1.18.2.4
retrieving revision 1.18.2.5
diff -u -r1.18.2.4 -r1.18.2.5
--- embpexec.pl 2000/06/06 14:39:13 1.18.2.4
+++ embpexec.pl 2000/06/07 09:22:55 1.18.2.5
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!D:\Perl\5.00502\bin\MSWin32-x86\perl
###################################################################################
#
# Embperl - Copyright (c) 1997-1999 Gerald Richter / ECOS
1.1.2.5 +2 -2 embperl/Attic/epcmd2.c
Index: epcmd2.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epcmd2.c,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -r1.1.2.4 -r1.1.2.5
--- epcmd2.c 2000/06/05 07:22:54 1.1.2.4
+++ epcmd2.c 2000/06/07 09:22:56 1.1.2.5
@@ -65,10 +65,10 @@
if (bEqual)
{
- Element_selfSetAttribut (pDomTree, pNode, sAttrName, nAttrLen, NULL, 0) ;
+ Element_selfSetAttribut (pDomTree, pNode, sAttrName, nAttrLen, NULL, 0, 1) ;
}
else
- Element_selfRemoveAttribut (pDomTree, pNode, sAttrName, nAttrLen) ;
+ Element_selfRemoveAttribut (pDomTree, pNode, sAttrName, nAttrLen, 1) ;
}
else
if (Element_selfGetAttribut (pDomTree, pNode, sAttrName, nAttrLen))
1.1.2.27 +5 -0 embperl/Attic/epcomp.c
Index: epcomp.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epcomp.c,v
retrieving revision 1.1.2.26
retrieving revision 1.1.2.27
diff -u -r1.1.2.26 -r1.1.2.27
--- epcomp.c 2000/06/06 10:25:26 1.1.2.26
+++ epcomp.c 2000/06/07 09:22:56 1.1.2.27
@@ -931,6 +931,11 @@
if (pSV)
{
SV * args[2] ;
+
+ nCheckpointCache = 0 ;
+ xCheckpointCache[nCheckpointCache++] = 0 ;
+ xCheckpointCache[nCheckpointCache++] = 0 ;
+
args[0] = r -> pReqSV ;
args[1] = newSViv (r -> xCurrDomTree) ;
CallStoredCV (r, pProg, (CV *)pSV, 2, args, 0, &pSV) ;
1.1.2.30 +131 -26 embperl/Attic/epdom.c
Index: epdom.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epdom.c,v
retrieving revision 1.1.2.29
retrieving revision 1.1.2.30
diff -u -r1.1.2.29 -r1.1.2.30
--- epdom.c 2000/06/06 14:39:13 1.1.2.29
+++ epdom.c 2000/06/07 09:22:56 1.1.2.30
@@ -32,6 +32,11 @@
tIndex xNoName = 0 ;
tIndex xDomTreeAttr = 0 ;
+int nCheckpointCache = 0 ;
+int nCheckpointCacheMask = 0x1ff ;
+tIndex xCheckpointCache[512] ;
+
+
#define dom_malloc(s) (nMemUsage += s, malloc(s))
#define dom_free(s) (free(s))
@@ -427,7 +432,7 @@
ArrayNew (&pDomTree -> pLookup, 128, sizeof (struct tNodeData *)) ;
ArrayAdd (&pDomTree -> pLookup, 1) ;
- ArrayNew (&pDomTree -> pOrder, 128, sizeof (tNode)) ;
+ ArrayNew (&pDomTree -> pOrder, 128, sizeof (tDomTreeOrder)) ;
pDomTree -> xNdx = n ;
pDomTree -> pLookup[0] = NULL ;
@@ -464,7 +469,7 @@
pDomTree -> xDocument = pOrgDomTree -> xDocument ;
ArrayClone (pOrgDomTree, &pDomTree -> pLookup) ;
- ArrayNew (&pDomTree -> pOrder, 128, sizeof (tNode)) ;
+ ArrayNew (&pDomTree -> pOrder, 128, sizeof (tDomTreeOrder)) ;
if (pDomTree -> pSV = pOrgDomTree -> pSV)
SvREFCNT_inc (pDomTree -> pSV) ;
@@ -474,7 +479,7 @@
if (pDocument -> nType == ntypDocumentFraq)
{
pDocument = Node_selfCloneNode (pDomTree, pDocument, 1) ;
- Element_selfSetAttribut (pDomTree, pDocument, NULL, xDomTreeAttr, NULL, pDomTree -> xNdx) ;
+ Element_selfSetAttribut (pDomTree, pDocument, NULL, xDomTreeAttr, NULL, pDomTree -> xNdx, 0) ;
pDomTree -> xDocument = pDocument -> xNdx ;
}
@@ -498,7 +503,8 @@
{
tDomTree * pDomTree = DomTree_self (xDomTree) ;
int n = ArrayAdd (&pDomTree -> pOrder, 1) ;
- (pDomTree -> pOrder)[n] = xChild ;
+ (pDomTree -> pOrder)[n].xFromNode = xChild ;
+ (pDomTree -> pOrder)[n].xToNode = 0 ;
if (pCurrReq -> bDebug & dbgParse)
lprintf (pCurrReq, "[%d]Checkpoint: Node=%d OrderIndex %d\n", pCurrReq -> nPid, xChild, n) ;
}
@@ -512,14 +518,15 @@
/* */
/* ------------------------------------------------------------------------ */
-void DomTree_selfCheckpoint (tDomTree * pDomTree, tNode xChild)
+void DomTree_selfCheckpoint (tDomTree * pDomTree, tNode xFromNode, tNode xToNode)
{
int n = ArrayAdd (&pDomTree -> pOrder, 1) ;
- (pDomTree -> pOrder)[n] = xChild ;
+ (pDomTree -> pOrder)[n].xFromNode = xFromNode ;
+ (pDomTree -> pOrder)[n].xToNode = xToNode ;
if (pCurrReq -> bDebug & dbgParse)
- lprintf (pCurrReq, "[%d]Checkpoint: Node=%d OrderIndex %d\n", pCurrReq -> nPid, xChild, n) ;
+ lprintf (pCurrReq, "[%d]Checkpoint: Node=%d -> %d OrderIndex %d\n", pCurrReq -> nPid, xFromNode, xToNode, n) ;
}
@@ -540,7 +547,7 @@
{
tNode xNode ;
tNodeData * pChild ;
- tNode * pOrder ;
+ tDomTreeOrder * pOrder ;
int n ;
int o ;
@@ -572,7 +579,7 @@
o = n = ArrayGetSize (pOrder) ;
while (--n >= 0)
{
- if (pOrder[n] == xNode)
+ if (pOrder[n].xFromNode == xNode)
break ;
}
ArraySetSize (&pDomTree -> pOrder, n) ;
@@ -1109,6 +1116,7 @@
{
int bFlags = nflgModified | nflgReturn ;
+ tNode xOrgChild = xOldChild ;
tNodeData * pOldChild = Node_self (pOldChildDomTree, xOldChild) ;
tNodeData * pNode = Node_self (pDomTree, xNode) ;
@@ -1168,10 +1176,10 @@
}
if (pOldChild -> nType == ntypDocumentFraq)
- Element_selfSetAttribut (pOldChildDomTree, pOldChild, NULL, xDomTreeAttr, NULL, pDomTree -> xNdx) ;
+ Element_selfSetAttribut (pOldChildDomTree, pOldChild, NULL, xDomTreeAttr, NULL, pDomTree -> xNdx, 0) ;
- DomTree_selfCheckpoint (pOldChildDomTree, xOldChild) ;
+ DomTree_selfCheckpoint (pOldChildDomTree, xOrgChild, xOldChild) ;
return xOldChild ;
}
@@ -1195,8 +1203,11 @@
{
struct tNodeData * pOldChild = Node_self (pDomTree, xOldChild) ;
+ tNode xOrgChild = xOldChild ;
+ xCheckpointCache[nCheckpointCache++] = xOldChild ;
+
if (pOldChild -> bFlags & nflgModified)
{
pOldChild -> bFlags |= bFlags ;
@@ -1204,8 +1215,13 @@
xOldChild = pOldChild -> xNdx ;
}
- DomTree_selfCheckpoint (pDomTree, xOldChild) ;
+ DomTree_selfCheckpoint (pDomTree, xOrgChild, xOldChild) ;
+ xCheckpointCache[nCheckpointCache++] = xOldChild ;
+ nCheckpointCache &= nCheckpointCacheMask ;
+ xCheckpointCache[nCheckpointCache] = 0 ;
+
+
if (nEscMode != -1)
{
pOldChild -> nType = (nEscMode & 3)?ntypText:ntypCDATA ;
@@ -1445,6 +1461,7 @@
tNode xFirstNode = xNode ;
tNode xNextNode ;
int nOrderNdx = *pOrderNdx ;
+ int nOrderIndexNode = -1 ;
tNodeData * pNextNode ;
tNodeData * pSavedNode = NULL ;
tNodeData * pLastStartTag = NULL ;
@@ -1462,7 +1479,7 @@
{
if (pNode -> bFlags & nflgCheckpoint)
{ /* see how the control flow contiounes */
- if ((xNextNode = pDomTree -> pOrder[nOrderNdx]) != pNode -> xNdx && xNextNode)
+ if ((xNextNode = pDomTree -> pOrder[nOrderNdx].xFromNode) != pNode -> xNdx && xNextNode)
{
tNodeData * pNewNode ;
tNodeData * pNewParent ;
@@ -1499,14 +1516,24 @@
if (pNode -> bFlags & nflgReturn)
{ /* we should use another node to replace this one */
- if ((xNextNode = pDomTree -> pOrder[nOrderNdx]) != pNode -> xNdx && xNextNode)
+ tDomTreeOrder * pOrder = pDomTree -> pOrder ;
+ int n = ArrayGetSize (pOrder) ;
+ int i = nOrderNdx ;
+
+ while (pOrder[i].xFromNode != pNode -> xNdx && i < n)
+ i++ ;
+
+ if ((xNextNode = pOrder[i].xToNode) != pNode -> xNdx && xNextNode)
{
if (pCurrReq -> bDebug & dbgParse)
lprintf (r, "[%d]toString: Replace Node=%d with Node=%d\n", r -> nPid, pNode -> xNdx, xNextNode) ;
pSavedNode = pNode ;
pNode = Node_self (pDomTree, xNextNode) ;
}
- nOrderNdx++ ;
+ if (i == nOrderNdx)
+ nOrderNdx++, nOrderIndexNode = -1 ;
+ else
+ nOrderIndexNode = i ;
}
@@ -1583,7 +1610,9 @@
owrite (r, s, l);
}
-
+ if (nOrderNdx == nOrderIndexNode)
+ nOrderNdx++ ;
+
if (pNode -> nType == ntypDocumentFraq)
pNextNode = NULL ;
else
@@ -1597,7 +1626,7 @@
while (pNextNode == NULL)
{
pNextNode = Node_selfParentNode (pDomTree, pNode) ;
- if (pNextNode == NULL || pNextNode == pFirstNode)
+ if (pNextNode == NULL || pNextNode == pFirstNode || pNextNode -> nType == ntypAttr)
{
*pOrderNdx = nOrderNdx ;
return ;
@@ -1606,7 +1635,7 @@
pNode = pNextNode ;
pNextNode = Node_selfNextSibling (pDomTree, pNextNode) ;
if (pNode -> nType == ntypStartTag && (pNode -> bFlags & nflgIgnore) == 0 &&
- (pNextNode == NULL || (pNextNode -> bFlags & nflgCheckpoint) == 0 || pDomTree -> pOrder[nOrderNdx] == pNextNode -> xNdx))
+ (pNextNode == NULL || (pNextNode -> bFlags & nflgCheckpoint) == 0 || pDomTree -> pOrder[nOrderNdx].xFromNode == pNextNode -> xNdx))
{
oputs (r, "</") ;
oputs (r, Node_selfNodeName (pNode)) ;
@@ -1722,7 +1751,7 @@
struct tAttrData * pAttr = (struct tAttrData * )(pNode + 1) ;
int n = pNode -> numAttr ;
- while (n > 0 && nAttrName != pAttr -> xName && pAttr -> bFlags)
+ while (n > 0 && (nAttrName != pAttr -> xName || !pAttr -> bFlags))
{
n-- ;
pAttr++ ;
@@ -1778,19 +1807,51 @@
/*in*/ const char * sAttrName,
/*in*/ int nAttrNameLen,
/*in*/ const char * sNewValue,
- /*in*/ int nNewValueLen)
+ /*in*/ int nNewValueLen,
+ /*in*/ int bClone)
{
- struct tAttrData * pAttr = Element_selfGetAttribut (pDomTree, pNode, sAttrName, nAttrNameLen) ;
+ tAttrData * pAttr = Element_selfGetAttribut (pDomTree, pNode, sAttrName, nAttrNameLen) ;
tNode xAttr ;
+ tNodeData * pNewNode ;
+ if (bClone)
+ pNode -> bFlags |= nflgReturn ;
+
if (pAttr)
{
- pAttr -> xValue = sNewValue?String2Ndx (sNewValue, nNewValueLen):nNewValueLen ;
+ tIndex xValue = sNewValue?String2Ndx (sNewValue, nNewValueLen):nNewValueLen ;
+
+ if (bClone)
+ {
+ if (pAttr -> xValue != xValue && (pNode -> bFlags & nflgModified))
+ {
+ pNewNode = Node_selfCloneNode (pDomTree, pNode, 1) ;
+ pAttr = Element_selfGetAttribut (pDomTree, pNewNode, sAttrName, nAttrNameLen) ;
+
+ DomTree_selfCheckpoint (pDomTree, pNode -> xNdx, pNewNode -> xNdx) ;
+ }
+ else
+ DomTree_selfCheckpoint (pDomTree, pNode -> xNdx, pNode -> xNdx) ;
+
+ pNode -> bFlags |= nflgModified ;
+ }
+ pAttr -> xValue = xValue ;
return pAttr ;
}
+
+ if (pNode -> bFlags & nflgModified)
+ pNewNode = Node_selfCloneNode (pDomTree, pNode, 1) ;
+ else
+ pNewNode = pNode ;
- xAttr = Node_appendChild (pDomTree, ntypAttr, 0, sAttrName, nAttrNameLen, pNode -> xNdx, 0) ;
+ if (bClone)
+ {
+ pNode -> bFlags |= nflgModified ;
+ DomTree_selfCheckpoint (pDomTree, pNode -> xNdx, pNewNode -> xNdx) ;
+ }
+
+ xAttr = Node_appendChild (pDomTree, ntypAttr, 0, sAttrName, nAttrNameLen, pNewNode -> xNdx, 0) ;
Node_appendChild (pDomTree, ntypAttrValue, 0, sNewValue, nNewValueLen, xAttr, 0) ;
return (tAttrData *)Node_self(pDomTree, xAttr) ;
}
@@ -1809,11 +1870,33 @@
tAttrData * Element_selfRemoveAttribut (/*in*/ tDomTree * pDomTree,
/*in*/ struct tNodeData * pNode,
/*in*/ const char * sAttrName,
- /*in*/ int nAttrNameLen)
+ /*in*/ int nAttrNameLen,
+ /*in*/ int bClone)
{
- struct tAttrData * pAttr = Element_selfGetAttribut (pDomTree, pNode, sAttrName, nAttrNameLen) ;
+ tAttrData * pAttr ;
+ tNodeData * pNewNode ;
+
+ pAttr = Element_selfGetAttribut (pDomTree, pNode, sAttrName, nAttrNameLen) ;
+ if (bClone)
+ {
+ if (pAttr != NULL && (pNode -> bFlags & nflgModified))
+ {
+ pNode -> bFlags |= nflgReturn | nflgModified ;
+
+ pNewNode = Node_selfCloneNode (pDomTree, pNode, 1) ;
+ pAttr = Element_selfGetAttribut (pDomTree, pNewNode, sAttrName, nAttrNameLen) ;
+ DomTree_selfCheckpoint (pDomTree, pNode -> xNdx, pNewNode -> xNdx) ;
+ }
+ else
+ {
+ pNode -> bFlags |= nflgReturn | nflgModified ;
+
+ DomTree_selfCheckpoint (pDomTree, pNode -> xNdx, pNode -> xNdx) ;
+ }
+ }
+
if (pAttr)
pAttr -> bFlags = 0 ;
/*
@@ -1888,7 +1971,29 @@
{
char * s ;
int l ;
- Ndx2StringLen (pNode -> nText,s,l) ;
+
+ if (pNode -> bFlags & nflgReturn)
+ {
+ tIndex xNdx = pNode -> xNdx ;
+ tNodeData * pUseNode ;
+ int i = nCheckpointCache - 2 ;
+
+ i &= nCheckpointCacheMask ;
+
+ while (xCheckpointCache[i] && xCheckpointCache[i] != xNdx)
+ {
+ i -= 2 ;
+ i &= nCheckpointCacheMask ;
+ }
+
+ if (xCheckpointCache[i])
+ xNdx = xCheckpointCache[i+1] ;
+
+ pUseNode = Node_self (pDomTree, xNdx) ;
+ Ndx2StringLen (pUseNode -> nText,s,l) ;
+ }
+ else
+ Ndx2StringLen (pNode -> nText,s,l) ;
StringAdd (ppAttr, s, l) ;
pNode = Node_selfNextSibling (pDomTree, pNode) ;
}
1.1.2.23 +21 -7 embperl/Attic/epdom.h
Index: epdom.h
===================================================================
RCS file: /home/cvs/embperl/Attic/epdom.h,v
retrieving revision 1.1.2.22
retrieving revision 1.1.2.23
diff -u -r1.1.2.22 -r1.1.2.23
--- epdom.h 2000/06/06 10:25:27 1.1.2.22
+++ epdom.h 2000/06/07 09:22:56 1.1.2.23
@@ -145,13 +145,22 @@
aflgAttrChilds = 4,
} ;
+struct tDomTreeOrder
+ {
+ tNode xFromNode ;
+ tNode xToNode ;
+ } ;
+
+typedef struct tDomTreeOrder tDomTreeOrder ;
+
+
struct tDomTree
{
- void * * pLookup ; /* table for converting tNode, tNodePad and tAttr to pointers */
- tNode * pOrder ; /* Order of dom tree after execution of code */
- tIndex xNdx ; /* Index of Dom Tree */
- tNode xDocument ; /* root document node */
- SV * pSV ;
+ void * * pLookup ; /* table for converting tNode, tNodePad and tAttr to pointers */
+ tDomTreeOrder * pOrder ; /* Order of dom tree after execution of code */
+ tIndex xNdx ; /* Index of Dom Tree */
+ tNode xDocument ; /* root document node */
+ SV * pSV ;
} ;
typedef struct tDomTree tDomTree ;
@@ -164,6 +173,9 @@
extern tIndex xNoName ; /* String index for Attribut with noname */
extern tIndex xDomTreeAttr ; /* String index for Attribut which holds the DomTree index */
+extern int nCheckpointCache ;
+extern int nCheckpointCacheMask ;
+extern tIndex xCheckpointCache[] ;
tStringIndex String2Ndx (/*in*/ const char * sText,
@@ -309,13 +321,15 @@
/*in*/ const char * sAttrName,
/*in*/ int nAttrNameLen,
/*in*/ const char * sNewValue,
- /*in*/ int nNewValueLen) ;
+ /*in*/ int nNewValueLen,
+ /*in*/ int bClone) ;
tAttrData * Element_selfRemoveAttribut (/*in*/ tDomTree * pDomTree,
/*in*/ struct tNodeData * pNode,
/*in*/ const char * sAttrName,
- /*in*/ int nAttrNameLen) ;
+ /*in*/ int nAttrNameLen,
+ /*in*/ int bClone) ;
#define Attr_self(pDomTree,xAttr) ((struct tAttrData *)(pDomTree -> pLookup[xAttr]))
1.57.2.21 +1 -1 embperl/test.pl
Index: test.pl
===================================================================
RCS file: /home/cvs/embperl/test.pl,v
retrieving revision 1.57.2.20
retrieving revision 1.57.2.21
diff -u -r1.57.2.20 -r1.57.2.21
--- test.pl 2000/06/07 04:10:38 1.57.2.20
+++ test.pl 2000/06/07 09:22:57 1.57.2.21
@@ -39,7 +39,7 @@
'loopperl.htm?erstes=Hallo&zweites=Leer+zeichen&drittes=%21%22%23&erstes=Wert2',
'table.htm',
'table.htm??1',
-## 'lists.htm?sel=2&SEL1=B&SEL3=D&SEL4=cc',
+ 'lists.htm?sel=2&SEL1=B&SEL3=D&SEL4=cc',
'mix.htm',
## 'nesting.htm',
'object.htm',
No revision
No revision
1.3.2.1 +25 -25 embperl/test/cmp/lists.htm
Index: lists.htm
===================================================================
RCS file: /home/cvs/embperl/test/cmp/lists.htm,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -u -r1.3 -r1.3.2.1
--- lists.htm 1999/10/05 06:02:13 1.3
+++ lists.htm 2000/06/07 09:23:02 1.3.2.1
@@ -71,11 +71,10 @@
If you request this document with list.htm?sel1=x you can specify that the
element of the dropdownlist is initialy selected
-
<p><select name="SEL1">
<option value="A">1</option>
- <option value="B" SELECTED>2</option>
+ <option value="B" selected>2</option>
<option value="C">3</option>
@@ -85,6 +84,7 @@
<option value="F">6</option>
</select></p>
+
</form>
<form method="POST">
@@ -120,37 +120,37 @@
<option value="F" selected size=5>6</option>
</select></p>
<p><select name="SEL3">
- <option value="A">1</option>
- <option value="A" >1</option>
- <option value="A" size=5>1</option>
-
- <option value="B">2</option>
- <option value="B" >2</option>
- <option value="B" size=5>2</option>
-
- <option value="C">3</option>
- <option value="C" >3</option>
- <option value="C" size=5>3</option>
+ <option value="A">1</option>
+ <option value="A">1</option>
+ <option value="A" size=5>1</option>
- <option selected value="D">4</option>
+ <option value="B">2</option>
+ <option value="B">2</option>
+ <option value="B" size=5>2</option>
+
+ <option value="C">3</option>
+ <option value="C">3</option>
+ <option value="C" size=5>3</option>
+
<option value="D" selected>4</option>
- <option value="D" selected size=5>4</option>
+ <option value="D" selected>4</option>
+ <option value="D" size=5 selected>4</option>
+
+ <option value="E">5</option>
+ <option value="E">5</option>
+ <option value="E" size=5>5</option>
- <option value="E">5</option>
- <option value="E" >5</option>
- <option value="E" size=5>5</option>
-
- <option value="F">6</option>
- <option value="F" >6</option>
- <option value="F" size=5>6</option>
+ <option value="F">6</option>
+ <option value="F">6</option>
+ <option value="F" size=5>6</option>
</select></p>
<p><select name="SEL4">
- <option value="aa">aaaa</option>
- <option value="bb" >bbbb</option>
+ <option value="aa">aaaa</option>
+ <option value="bb">bbbb</option>
<option value="cc" selected size=5>cccc</option>
<option value="dd">aaaa</option>
<option value="ee">bbbb</option>
- <option value="cc" size=5 SELECTED>cccc</option>
+ <option value="cc" size=5 selected>cccc</option>
</select></p>
</form>
No revision
No revision
1.1.2.1.2.1 +2 -1 embperl/test/html/lists.htm
Index: lists.htm
===================================================================
RCS file: /home/cvs/embperl/test/html/lists.htm,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.1.2.1
diff -u -r1.1.2.1 -r1.1.2.1.2.1
--- lists.htm 1998/07/14 20:11:21 1.1.2.1
+++ lists.htm 2000/06/07 09:23:04 1.1.2.1.2.1
@@ -10,6 +10,7 @@
[- @k = (1, 2, 3, 4, 5, 6) -]
[- @v = ('A', 'B', 'C', 'D', 'E', 'F') -]
+
</p>
<hr>
<P>OL Tag</P>
@@ -43,10 +44,10 @@
If you request this document with list.htm?sel1=x you can specify that the
element of the dropdownlist is initialy selected
-
<p><select name="SEL1">
<option value="[+ $v[$row] +]">[+ $k[$row] +]</option>
</select></p>
+
</form>
<form method="POST">