richter 01/10/29 12:07:13
Modified: . Tag: Embperl2c Cmd.xs DOM.xs epcmd2.c epcomp.c
epdom.c epdom.h
test/cmp2 Tag: Embperl2c lists.htm
test/html Tag: Embperl2c table.htm
Log:
Embperl 2 - tree structure rewrite
Revision Changes Path
No revision
No revision
1.1.2.9 +4 -4 embperl/Cmd.xs
Index: Cmd.xs
===================================================================
RCS file: /home/cvs/embperl/Cmd.xs,v
retrieving revision 1.1.2.8
retrieving revision 1.1.2.9
diff -u -r1.1.2.8 -r1.1.2.9
--- Cmd.xs 2001/10/22 06:25:01 1.1.2.8
+++ Cmd.xs 2001/10/29 20:07:12 1.1.2.9
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: Cmd.xs,v 1.1.2.8 2001/10/22 06:25:01 richter Exp $
+# $Id: Cmd.xs,v 1.1.2.9 2001/10/29 20:07:12 richter Exp $
#
###################################################################################
@@ -40,7 +40,7 @@
STRLEN nValue ;
char * sN = SV2String (sName, nName) ;
char * sV = SV2String (sValue, nValue) ;
- embperlCmd_InputCheck (pCurrReq, DomTree_self (xDomTree), xNode, 0, sN, nName,
sV, nValue, SvOK (bSetInSource)?1:0) ;
+ embperlCmd_InputCheck (pCurrReq, DomTree_self (xDomTree), xNode, pCurrReq ->
nCurrRepeatLevel, sN, nName, sV, nValue, SvOK (bSetInSource)?1:0) ;
void
@@ -55,7 +55,7 @@
STRLEN nValue ;
char * sN = SV2String (sName, nName) ;
char * sV = SV2String (sValue, nValue) ;
- embperlCmd_Option (pCurrReq, DomTree_self (xDomTree), xNode, 0, sN, nName, sV,
nValue, SvOK (bSetInSource)?1:0) ;
+ embperlCmd_Option (pCurrReq, DomTree_self (xDomTree), xNode, pCurrReq ->
nCurrRepeatLevel, sN, nName, sV, nValue, SvOK (bSetInSource)?1:0) ;
void
@@ -64,7 +64,7 @@
int xNode
char * sArg
CODE:
- embperlCmd_Hidden (pCurrReq, DomTree_self (xDomTree), xNode, 0, sArg) ;
+ embperlCmd_Hidden (pCurrReq, DomTree_self (xDomTree), xNode, pCurrReq ->
nCurrRepeatLevel, sArg) ;
1.1.2.18 +10 -14 embperl/DOM.xs
Index: DOM.xs
===================================================================
RCS file: /home/cvs/embperl/DOM.xs,v
retrieving revision 1.1.2.17
retrieving revision 1.1.2.18
diff -u -r1.1.2.17 -r1.1.2.18
--- DOM.xs 2001/10/25 08:26:02 1.1.2.17
+++ DOM.xs 2001/10/29 20:07:12 1.1.2.18
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: DOM.xs,v 1.1.2.17 2001/10/25 08:26:02 richter Exp $
+# $Id: DOM.xs,v 1.1.2.18 2001/10/29 20:07:12 richter Exp $
#
###################################################################################
@@ -63,7 +63,7 @@
PPCODE:
SvGETMAGIC_P4(sText) ;
s = SV2String (sText, l) ;
- Node_replaceChildWithCDATA (DomTree_self(pDomNode -> xDomTree), pDomNode ->
xNode, pCurrReq -> nCurrRepeatLevel, s, l, (pCurrReq -> nCurrEscMode & 3)== 3?1 +
(pCurrReq -> nCurrEscMode & 4):pCurrReq -> nCurrEscMode, nflgModified | nflgReturn) ;
+ Node_replaceChildWithCDATA (DomTree_self(pDomNode -> xDomTree), pDomNode ->
xNode, pCurrReq -> nCurrRepeatLevel, s, l, (pCurrReq -> nCurrEscMode & 3)== 3?1 +
(pCurrReq -> nCurrEscMode & 4):pCurrReq -> nCurrEscMode, 0) ;
pCurrReq -> nCurrEscMode = pCurrReq -> nEscMode ;
pCurrReq -> bEscModeSet = -1 ;
/*SvREFCNT_inc (sText) ;*/
@@ -82,7 +82,7 @@
PPCODE:
SvGETMAGIC_P4(sText) ;
s = SV2String (sText, l) ;
- Node_replaceChildWithCDATA (DomTree_self(xDomTree), xOldChild, pCurrReq ->
nCurrRepeatLevel, s, l, (pCurrReq -> nCurrEscMode & 3)== 3?1 + (pCurrReq ->
nCurrEscMode & 4):pCurrReq -> nCurrEscMode, nflgModified | nflgReturn) ;
+ Node_replaceChildWithCDATA (DomTree_self(xDomTree), xOldChild, pCurrReq ->
nCurrRepeatLevel, s, l, (pCurrReq -> nCurrEscMode & 3)== 3?1 + (pCurrReq ->
nCurrEscMode & 4):pCurrReq -> nCurrEscMode, 0) ;
pCurrReq -> nCurrEscMode = pCurrReq -> nEscMode ;
pCurrReq -> bEscModeSet = -1 ;
/*SvREFCNT_inc (sText) ;*/
@@ -100,7 +100,7 @@
PPCODE:
SvGETMAGIC_P4(sText) ;
s = SV2String (sText, l) ;
- Node_replaceChildWithCDATA (DomTree_self(pCurrReq -> xCurrDomTree), xOldChild,
pCurrReq -> nCurrRepeatLevel, s, l, (pCurrReq -> nCurrEscMode & 3)== 3?1 + (pCurrReq
-> nCurrEscMode & 4):pCurrReq -> nCurrEscMode, nflgModified | nflgReturn) ;
+ Node_replaceChildWithCDATA (DomTree_self(pCurrReq -> xCurrDomTree), xOldChild,
pCurrReq -> nCurrRepeatLevel, s, l, (pCurrReq -> nCurrEscMode & 3)== 3?1 + (pCurrReq
-> nCurrEscMode & 4):pCurrReq -> nCurrEscMode, 0) ;
pCurrReq -> nCurrEscMode = pCurrReq -> nEscMode ;
pCurrReq -> bEscModeSet = -1 ;
/*SvREFCNT_inc (sText) ;*/
@@ -164,9 +164,7 @@
CODE:
sT = SV2String (sText, nText) ;
pDomTree = DomTree_self(pParentNode -> xDomTree) ;
- Node_self (pDomTree,pParentNode -> xNode) -> bFlags |= nflgModified |
nflgReturn ;
- xNewParent = Node_cloneNode (pDomTree, pParentNode -> xNode, 0, 1) ;
- Node_appendChild (pDomTree, xNewParent, pCurrReq -> nCurrRepeatLevel, nType, 0,
sT, nText, 0, 0, NULL) ;
+ Node_appendChild (pDomTree, pParentNode -> xNode, pCurrReq -> nCurrRepeatLevel,
nType, 0, sT, nText, 0, 0, NULL) ;
void
@@ -180,9 +178,7 @@
STRLEN nText ;
char * sT = SV2String (sText, nText) ;
tDomTree * pDomTree = DomTree_self(xDomTree) ;
- Node_self (pDomTree,xParent) -> bFlags |= nflgModified | nflgReturn ;
- xNewParent = Node_cloneNode (pDomTree, xParent, 0, 1) ;
- Node_appendChild (pDomTree, xNewParent, pCurrReq -> nCurrRepeatLevel, nType, 0,
sT, nText, 0, 0, NULL) ;
+ Node_appendChild (pDomTree, xParent, pCurrReq -> nCurrRepeatLevel, nType, 0,
sT, nText, 0, 0, NULL) ;
char *
@@ -250,7 +246,7 @@
pDomTree = DomTree_self (pDomNode -> xDomTree) ;
- Element_selfSetAttribut (pDomTree, Node_self (pDomTree, pDomNode -> xNode),
pCurrReq -> nCurrRepeatLevel, sA, nAttr, sT, nText, 1) ;
+ Element_selfSetAttribut (pDomTree, Node_self (pDomTree, pDomNode -> xNode),
pCurrReq -> nCurrRepeatLevel, sA, nAttr, sT, nText) ;
void
@@ -266,7 +262,7 @@
char * sA = SV2String (sAttr, nAttr) ;
tDomTree * pDomTree = DomTree_self (xDomTree) ;
- Element_selfSetAttribut (pDomTree, Node_self (pDomTree, xNode), pCurrReq ->
nCurrRepeatLevel, sA, nAttr, sT, nText, 1) ;
+ Element_selfSetAttribut (pDomTree, Node_self (pDomTree, xNode), pCurrReq ->
nCurrRepeatLevel, sA, nAttr, sT, nText) ;
@@ -283,7 +279,7 @@
sA = SV2String (sAttr, nAttr) ;
pDomTree = DomTree_self (pDomNode -> xDomTree) ;
- Element_selfRemoveAttribut (pDomTree, Node_self (pDomTree, pDomNode -> xNode),
pCurrReq -> nCurrRepeatLevel, sA, nAttr, 1) ;
+ Element_selfRemoveAttribut (pDomTree, Node_self (pDomTree, pDomNode -> xNode),
pCurrReq -> nCurrRepeatLevel, sA, nAttr) ;
void
@@ -296,7 +292,7 @@
char * sA = SV2String (sAttr, nAttr) ;
tDomTree * pDomTree = DomTree_self (xDomTree) ;
- Element_selfRemoveAttribut (pDomTree, Node_self (pDomTree, xNode), pCurrReq ->
nCurrRepeatLevel, sA, nAttr, 1) ;
+ Element_selfRemoveAttribut (pDomTree, Node_self (pDomTree, xNode), pCurrReq ->
nCurrRepeatLevel, sA, nAttr) ;
################################################################################
1.4.2.14 +7 -25 embperl/Attic/epcmd2.c
Index: epcmd2.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epcmd2.c,v
retrieving revision 1.4.2.13
retrieving revision 1.4.2.14
diff -u -r1.4.2.13 -r1.4.2.14
--- epcmd2.c 2001/10/25 08:26:02 1.4.2.13
+++ epcmd2.c 2001/10/29 20:07:12 1.4.2.14
@@ -9,7 +9,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epcmd2.c,v 1.4.2.13 2001/10/25 08:26:02 richter Exp $
+# $Id: epcmd2.c,v 1.4.2.14 2001/10/29 20:07:12 richter Exp $
#
###################################################################################*/
@@ -68,13 +68,13 @@
if (bEqual)
{
- Element_selfSetAttribut (pDomTree, pNode, nRepeatLevel, sAttrName,
nAttrLen, NULL, 0, 1) ;
+ Element_selfSetAttribut (pDomTree, pNode, nRepeatLevel, sAttrName,
nAttrLen, NULL, 0) ;
if (r -> bDebug & dbgInput)
lprintf (r, "[%d]INPU: Set Attribut: Name: '%*.*s' Value: '%*.*s'
Attribute: '%*.*s'\n", r -> nPid, nNameLen, nNameLen, pName, nValLen, nValLen, pVal,
nAttrLen, nAttrLen, sAttrName) ;
}
else
{
- Element_selfRemoveAttribut (pDomTree, pNode, nRepeatLevel, sAttrName,
nAttrLen, 1) ;
+ Element_selfRemoveAttribut (pDomTree, pNode, nRepeatLevel, sAttrName,
nAttrLen) ;
if (r -> bDebug & dbgInput)
lprintf (r, "[%d]INPU: Remove Attribut: Name: '%*.*s' Value: '%*.*s'
Attribute: '%*.*s'\n", r -> nPid, nNameLen, nNameLen, pName, nValLen, nValLen, pVal,
nAttrLen, nAttrLen, sAttrName ) ;
}
@@ -86,23 +86,13 @@
hv_store (pCurrReq -> pInputHash, (char *)pName, nNameLen, newSVpv
((nValLen?((char *)pVal):""), nValLen), 0) ;
if (r -> bDebug & dbgInput)
lprintf (r, "[%d]INPU: Has already Attribut: Name: '%*.*s' Value:
'%*.*s' Attribute: '%*.*s'\n", r -> nPid, nNameLen, nNameLen, pName, nValLen, nValLen,
pVal, nAttrLen, nAttrLen, sAttrName ) ;
- if ((pNode -> bFlags & (nflgModified | nflgReturn)) == (nflgModified |
nflgReturn) && !bSetInSource)
- Element_selfRemoveAttribut (pDomTree, pNode, nRepeatLevel, sAttrName,
nAttrLen, 1) ;
}
else
{
if (r -> bDebug & dbgInput)
lprintf (r, "[%d]INPU: No value in %%fdat for Attribut: Name: '%*.*s'
Value: '%*.*s' Attribute: '%*.*s'\n", r -> nPid, nNameLen, nNameLen, pName, nValLen,
nValLen, pVal, nAttrLen, nAttrLen, sAttrName ) ;
- if ((pNode -> bFlags & (nflgModified | nflgReturn)) == (nflgModified |
nflgReturn) && bSetInSource)
- Element_selfSetAttribut (pDomTree, pNode, nRepeatLevel, sAttrName,
nAttrLen, NULL, 0, 1) ;
-
}
- if ((pNode -> bFlags & nflgModified) == 0)
- {
- pNode = Node_selfCondCloneNode (pDomTree, pNode, nRepeatLevel) ;
- pNode -> bFlags |= nflgModified | nflgReturn ; /* don't modifiy attribute
again, for example in another loop iteration */
- }
}
}
@@ -189,16 +179,8 @@
EPENTRY (CmdHidden) ;
pNode = Node_selfCondCloneNode (pDomTree, Node_selfLevel (pDomTree, xNode,
nRepeatLevel), nRepeatLevel) ;
-
- if ((pNode -> bFlags & nflgModified))
- {
- pNode -> bFlags |= nflgReturn | nflgModified ;
- pNewNode = Node_selfCloneNode (pDomTree, pNode, nRepeatLevel, 0) ;
- }
- else
- pNewNode = pNode ;
- pNewNode -> bFlags |= nflgReturn | nflgModified ;
+ pNewNode = pNode ;
sArgs = _ep_strdup (r, sArg) ;
if (sArgs && *sArgs != '\0')
@@ -359,7 +341,7 @@
int f = AvFILL(pAV) ;
tNode xNode ;
- xOldChild = Node_replaceChildWithCDATA (DomTree_self(xDomTree), xOldChild,
nRepeatLevel, "", 0, 4, nflgModified | nflgReturn) ;
+ xOldChild = Node_replaceChildWithCDATA (DomTree_self(xDomTree), xOldChild,
nRepeatLevel, "", 0, 4, 0) ;
for (i = 0; i <= f; i++)
{
@@ -389,7 +371,7 @@
int i = 0 ;
I32 l32 ;
- xOldChild = Node_replaceChildWithCDATA (DomTree_self(xDomTree), xOldChild,
nRepeatLevel, "", 0, 4, nflgModified | nflgReturn) ;
+ xOldChild = Node_replaceChildWithCDATA (DomTree_self(xDomTree), xOldChild,
nRepeatLevel, "", 0, 4, 0) ;
hv_iterinit (pHV) ;
while (pEntry = hv_iternext (pHV))
@@ -416,7 +398,7 @@
else
{
char * s = SV2String (sText, l) ;
- Node_replaceChildWithCDATA (DomTree_self(xDomTree), xOldChild,
nRepeatLevel, s, l, (pCurrReq -> nCurrEscMode & 3) == 3?2 + (pCurrReq -> nCurrEscMode
& 4):pCurrReq -> nCurrEscMode, nflgModified | nflgReturn) ;
+ Node_replaceChildWithCDATA (DomTree_self(xDomTree), xOldChild,
nRepeatLevel, s, l, (pCurrReq -> nCurrEscMode & 3) == 3?2 + (pCurrReq -> nCurrEscMode
& 4):pCurrReq -> nCurrEscMode, 0) ;
}
pCurrReq -> nCurrEscMode = pCurrReq -> nEscMode ;
1.4.2.63 +1 -3 embperl/Attic/epcomp.c
Index: epcomp.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epcomp.c,v
retrieving revision 1.4.2.62
retrieving revision 1.4.2.63
diff -u -r1.4.2.62 -r1.4.2.63
--- epcomp.c 2001/10/25 08:26:02 1.4.2.62
+++ epcomp.c 2001/10/29 20:07:12 1.4.2.63
@@ -9,7 +9,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epcomp.c,v 1.4.2.62 2001/10/25 08:26:02 richter Exp $
+# $Id: epcomp.c,v 1.4.2.63 2001/10/29 20:07:12 richter Exp $
#
###################################################################################*/
@@ -1090,7 +1090,6 @@
int l ;
char buf [80] ;
- pNode -> bFlags |= nflgCheckpoint ;
nCheckpointArrayOffset = ArrayAdd (&pDomTree -> pCheckpoints, 1) ;
pDomTree -> pCheckpoints[nCheckpointArrayOffset].xNode = pNode -> xNdx ;
*bCheckpointPending = 0 ;
@@ -1356,7 +1355,6 @@
int l ;
char buf [80] ;
- pNode -> bFlags |= nflgCheckpoint ;
nCheckpointArrayOffset = ArrayAdd (&pDomTree -> pCheckpoints, 1) ;
pDomTree -> pCheckpoints[nCheckpointArrayOffset].xNode = xNode ;
*bCheckpointPending = 0 ;
1.4.2.61 +202 -201 embperl/Attic/epdom.c
Index: epdom.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epdom.c,v
retrieving revision 1.4.2.60
retrieving revision 1.4.2.61
diff -u -r1.4.2.60 -r1.4.2.61
--- epdom.c 2001/10/28 19:29:52 1.4.2.60
+++ epdom.c 2001/10/29 20:07:12 1.4.2.61
@@ -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.60 2001/10/28 19:29:52 richter Exp $
+# $Id: epdom.c,v 1.4.2.61 2001/10/29 20:07:12 richter Exp $
#
###################################################################################*/
@@ -761,39 +761,9 @@
-tNodeData * Node_selfLevelItem (/*in*/ tDomTree * pDomTree,
- /*in*/ tNode xNode,
- /*in*/ tRepeatLevel nLevel)
- {
- tRepeatLevelLookup * pLookupLevelNode ;
- pLookupLevelNode = pDomTree -> pLookup[xNode].pLookupLevel ;
- if (pLookupLevelNode)
- {
- register tRepeatLevelLookupItem * pLookupLevelNodeLevel = &pLookupLevelNode ->
items[nLevel & pLookupLevelNode -> nMask] ;
- register tNodeData * pLnNode =
pLookupLevelNodeLevel -> pNode ;
- if (!pLnNode)
- return ((struct tNodeData *)(DomTree_self(pDomTree -> xSourceNdx) ->
pLookup[xNode].pLookup)) ;
- if (pLnNode -> nRepeatLevel == nLevel)
- return pLnNode ;
- while (pLookupLevelNodeLevel = pLookupLevelNodeLevel -> pNext)
- {
- pLnNode = pLookupLevelNodeLevel -> pNode ;
- if (pLnNode -> nRepeatLevel == nLevel)
- return pLnNode ;
- }
- }
-
-
- return ((struct tNodeData *)(DomTree_self(pDomTree -> xSourceNdx) ->
pLookup[xNode].pLookup)) ;
- }
-
-
-
-
-
/* ------------------------------------------------------------------------ */
/* */
/* DomInit */
@@ -905,6 +875,7 @@
pDomTree -> pDomTreeSV = pSV ;
pDomTree -> xNdx = n ;
+ pDomTree -> xSourceNdx = n ;
return pDomTree ;
@@ -1085,7 +1056,7 @@
{
tAttrData * pAttr;
pDocument = Node_selfCloneNode (pDomTree, pDocument, 0, 1) ;
- pAttr = Element_selfSetAttribut (pDomTree, pDocument, 0, NULL, xDomTreeAttr,
NULL, pDomTree -> xNdx, 0) ;
+ pAttr = Element_selfSetAttribut (pDomTree, pDocument, 0, NULL, xDomTreeAttr,
NULL, pDomTree -> xNdx) ;
pAttr -> bFlags = aflgOK ; /* reset string value flag */
pDomTree -> xDocument = pDocument -> xNdx ;
pDocument -> nType = ntypDocumentFraq ;
@@ -1184,7 +1155,7 @@
pPrevNode -> bFlags |= nflgIgnore ;
}
- if (pCompileParent == pRunParent)
+ if (pCompileParent -> xNdx == pRunParent -> xNdx )
{
pRunNode = Node_selfCondCloneNode (pDomTree, pRunNode, r ->
nCurrRepeatLevel) ;
@@ -1221,7 +1192,7 @@
pRunNode -> xNdx, xNode_selfLevelNull(pDomTree,pRunNode),
pRunNode -> nLinenumber, sv_count) ;
}
- else if (pCompileParent2 == pRunParent2)
+ else if (pCompileParent2 -> xNdx == pRunParent2 -> xNdx )
{
if (pRunParent -> nType != ntypAttr && pCompileParent -> nType !=
ntypAttr)
{
@@ -1505,7 +1476,71 @@
*/
+/* ------------------------------------------------------------------------ */
+/* */
+/* Node_selfLevelItem */
+/* */
+/*!
+* \_en
+* returns the node with index xNode and repeat level nLevel. If there is
+* node node in this repeat level, the node from the source DomTree with
+* level zero is returned
+*
+* @param pDomTree current DomTree we are working on
+* @param xNode node index
+* @param nRepeatLevel repeat level
+*
+* @note Don't use this function directly, use the macro Node_selfLevel
+* \endif
+*
+* \_de
+* Liefert den Node mit dem Index xNode und dem RepeatLevel nLevel. Wenn
+* dieser nicht existiert wird der Node mit Index Null aus dem Source
+* DomTree zur�ck geliefert
+*
+* @param pDomTree DomTree der den Node enth�lt
+* @param pNode Node Index
+* @param nRepeatLevel RepeatLevel
+*
+* @note Dieser Funtkion sollte nicht direkt aufgerufen werden, sondern
+* das Makro Node_selfLevel
+* \endif
+*
+* ------------------------------------------------------------------------ */
+
+
+tNodeData * Node_selfLevelItem (/*in*/ tDomTree * pDomTree,
+ /*in*/ tNode xNode,
+ /*in*/ tRepeatLevel nLevel)
+
+ {
+ tRepeatLevelLookup * pLookupLevelNode ;
+
+ pLookupLevelNode = pDomTree -> pLookup[xNode].pLookupLevel ;
+ if (pLookupLevelNode)
+ {
+ register tRepeatLevelLookupItem * pLookupLevelNodeLevel = &pLookupLevelNode ->
items[nLevel & pLookupLevelNode -> nMask] ;
+ register tNodeData * pLnNode =
pLookupLevelNodeLevel -> pNode ;
+ if (!pLnNode)
+ return ((struct tNodeData *)(DomTree_self(pDomTree -> xSourceNdx) ->
pLookup[xNode].pLookup)) ;
+ if (pLnNode -> nRepeatLevel == nLevel)
+ return pLnNode ;
+ while (pLookupLevelNodeLevel = pLookupLevelNodeLevel -> pNext)
+ {
+ pLnNode = pLookupLevelNodeLevel -> pNode ;
+ if (pLnNode -> nRepeatLevel == nLevel)
+ return pLnNode ;
+ }
+ }
+
+
+ return ((struct tNodeData *)(DomTree_self(pDomTree -> xSourceNdx) ->
pLookup[xNode].pLookup)) ;
+ }
+
+
+
+
/* ------------------------------------------------------------------------ */
/* */
/* Node_cloneNode */
@@ -1558,7 +1593,6 @@
pDomTree -> pLookup[xNewNode].pLookup = pNew ;
pDomTree -> pLookup[xNewNode].pLookupLevel = NULL ;
pNew -> xNdx = xNewNode ;
- pNew -> bFlags &= ~nflgModified ;
pNew -> xDomTree = pDomTree -> xNdx ;
pNew -> nRepeatLevel = nRepeatLevel ;
@@ -1714,7 +1748,6 @@
memcpy (pNew, pNode, len) ;
- pNew -> bFlags &= ~nflgModified ;
pNew -> xDomTree = pDomTree -> xNdx ;
if (pNew -> nText)
@@ -1851,8 +1884,10 @@
if (xChilds)
{ /* --- attribute has already childs, get the first and last one --- */
- tNodeData * pFirstChild = Node_self (pDomTree, xChilds) ;
- tNodeData * pLastChild = Node_self (pDomTree, pFirstChild -> xPrev) ;
+ tNodeData * pFirstChild = Node_selfLevel (pDomTree, xChilds, nRepeatLevel) ;
+ tNodeData * pLastChild = Node_selfLevel (pDomTree, pFirstChild -> xPrev,
nRepeatLevel) ;
+ pFirstChild = Node_selfCondCloneNode (pDomTree, pFirstChild, nRepeatLevel) ;
+ pLastChild = Node_selfCondCloneNode (pDomTree, pLastChild, nRepeatLevel) ;
pNewChild -> xNext = pFirstChild -> xNdx ;
pNewChild -> xPrev = pLastChild -> xNdx ;
@@ -1877,15 +1912,35 @@
/* ------------------------------------------------------------------------ */
/* */
/* Node_selfExpand */
-/* */
-/* Expand a node to hold more attributes */
-/* */
-/* pNode Node to expand */
-/* numOldAttr number of Attributes in the old node that must be relocated */
-/* (-1 to take form pNode) */
-/* numNewAttr new number of attributes */
/* */
-/* ------------------------------------------------------------------------ */
+/*!
+* \_en
+* Expand a node to hold more attributes
+*
+* @param pNode Node to expand
+* @param numOldAttr number of Attributes in the old node that must
+* be relocated (-1 to take form pNode)
+* @param numNewAttr new number of attributes
+* @return The node with space for numNewAttr
+*
+* @warning The node may have a new memory address after this function
+* \endif
+*
+* \_de
+* Expandiert einen Node um mehr Attribute aufzunehmen
+*
+* @param pNode Node der expandiert werden soll
+* @param numOldAttr Anzahl der Attribute die Relokiert werden m�ssen
+* (-1 um alle Attribute zu relokieren)
+* @param numNewAttr Neue Anzahl der Attribute
+* @return Den Node mit platz f�r numNewAttr
+*
+* @warning Der Node liegt nach dem Aufruf dieser Funktion u.U. an
+* anderen Speicheradresse
+* \endif
+*
+* ------------------------------------------------------------------------ */
+
@@ -1904,14 +1959,34 @@
if (pNewChild != pNode)
{
- tAttrData * pAttr = ((struct tAttrData * )(pNewChild + 1)) ;
- tLookupItem * pLookup = pDomTree -> pLookup ;
+ tAttrData * pAttr = ((struct tAttrData * )(pNewChild + 1)) ;
+ tLookupItem * pLookup = pDomTree -> pLookup ;
+ tRepeatLevelLookup *pLookupLevelNode= pLookup[xNdx].pLookupLevel ;
if (numOldAttr == (tUInt16) -1)
numOldAttr = pNewChild -> numAttr ;
pLookup[xNdx].pLookup = pNewChild ;
- pLookup[xNdx].pLookupLevel = NULL ;
+ if (pLookupLevelNode)
+ {
+ tRepeatLevel nLevel = pNewChild -> nRepeatLevel ;
+ register tRepeatLevelLookupItem * pLookupLevelNodeLevel =
&pLookupLevelNode -> items[nLevel & pLookupLevelNode -> nMask] ;
+ register tNodeData * pLnNode =
pLookupLevelNodeLevel -> pNode ;
+ if (pLnNode && pLnNode -> nRepeatLevel == nLevel)
+ pLookupLevelNodeLevel -> pNode = pNewChild ;
+ else
+ {
+ while (pLookupLevelNodeLevel = pLookupLevelNodeLevel -> pNext)
+ {
+ pLnNode = pLookupLevelNodeLevel -> pNode ;
+ if (pLnNode -> nRepeatLevel == nLevel)
+ {
+ pLookupLevelNodeLevel -> pNode = pNewChild ;
+ break ;
+ }
+ }
+ }
+ }
while (numOldAttr--)
{
@@ -1919,6 +1994,8 @@
pLookup[pAttr -> xNdx].pLookupLevel = NULL ;
pAttr++ ;
}
+
+
}
return pNewChild ;
@@ -1950,7 +2027,7 @@
tNodeData * pParent;
tIndex xText ;
- pParent = Node_selfLevel (pDomTree, xParent, nRepeatLevel) ;
+ pParent = Node_self (pDomTree, xParent) ;
/* --- clone node if it doesn't live in the current DomTree -- */
if (pParent)
@@ -1960,13 +2037,11 @@
tNodeData * pNode = Attr_selfNode (((tAttrData *)pParent)) ;
pNode = Node_selfCondCloneNode (pDomTree, pNode, nRepeatLevel) ;
-
- pParent = Node_selfLevel (pDomTree, xParent, nRepeatLevel) ;
+ pParent = Node_self (pDomTree, xParent) ; /* relookup in case of node move
*/
}
else
{
- if (pParent -> xDomTree != pDomTree -> xNdx)
- pParent = Node_selfCondCloneNode (pDomTree, pParent, nRepeatLevel) ;
+ pParent = Node_selfCondCloneNode (pDomTree, pParent, nRepeatLevel) ;
}
}
@@ -2239,86 +2314,72 @@
/*in*/ tRepeatLevel nOldRepeatLevel)
{
- int bFlags = nflgModified | nflgReturn ;
tNode xOrgChild = xOldChild ;
tNodeData * pNode = Node_selfLevel (pDomTree, xNode, nRepeatLevel) ;
- tNodeData * pOldChild ;
-
- pOldChild = Node_selfCondCloneNode (pOldChildDomTree, Node_selfLevel
(pOldChildDomTree, xOldChild, nOldRepeatLevel), nOldRepeatLevel) ;
-
- if (pOldChild -> bFlags & nflgModified)
- {
- pOldChild -> bFlags |= bFlags ;
- pOldChild = Node_selfCloneNode (pOldChildDomTree, pNode, nOldRepeatLevel, 1) ;
- xOldChild = pOldChild -> xNdx ;
- }
- else
- {
- int len = sizeof (tNodeData) + pNode -> numAttr * sizeof (tAttrData)
;
- int numAttr = pOldChild -> numAttr ;
- int nOffset ;
- tAttrData * pAttr ;
- int n ;
- tLookupItem * pLookup ;
+ tNodeData * pOldChild = Node_selfCondCloneNode (pOldChildDomTree,
Node_selfLevel (pOldChildDomTree, xOldChild, nOldRepeatLevel), nOldRepeatLevel) ;
+ int len = sizeof (tNodeData) + pNode -> numAttr * sizeof (tAttrData)
;
+ int numAttr = pOldChild -> numAttr ;
+ int nOffset ;
+ tAttrData * pAttr ;
+ int n ;
+ tLookupItem * pLookup ;
- pOldChild = Node_selfExpand (pOldChildDomTree, pOldChild, 0, pNode ->
numAttr) ;
-
- if (pOldChild -> nText)
- NdxStringFree (pOldChild -> nText) ;
+ pOldChild = Node_selfExpand (pOldChildDomTree, pOldChild, 0, pNode -> numAttr)
;
+
+ if (pOldChild -> nText)
+ NdxStringFree (pOldChild -> nText) ;
- pAttr = ((struct tAttrData * )(pOldChild + 1)) ;
- n = pOldChild -> numAttr ;
+ pAttr = ((struct tAttrData * )(pOldChild + 1)) ;
+ n = pOldChild -> numAttr ;
- while (n > 0)
- {
- if (pAttr -> xName)
- NdxStringFree (pAttr -> xName) ;
- if (pAttr -> xValue && (pAttr -> bFlags & aflgAttrValue))
- NdxStringFree (pAttr -> xValue) ;
- n-- ;
- pAttr++ ;
- }
+ while (n > 0)
+ {
+ if (pAttr -> xName)
+ NdxStringFree (pAttr -> xName) ;
+ if (pAttr -> xValue && (pAttr -> bFlags & aflgAttrValue))
+ NdxStringFree (pAttr -> xValue) ;
+ n-- ;
+ pAttr++ ;
+ }
- memcpy (pOldChild, pNode, len) ;
+ memcpy (pOldChild, pNode, len) ;
- if (pOldChild -> nText)
- NdxStringRefcntInc (pOldChild -> nText) ;
-
+ if (pOldChild -> nText)
+ NdxStringRefcntInc (pOldChild -> nText) ;
+
- pOldChild -> xDomTree = pDomTree -> xNdx ;
- pOldChild -> xNdx = xOldChild ;
- pOldChild -> bFlags |= bFlags ;
+ pOldChild -> xDomTree = pDomTree -> xNdx ;
+ pOldChild -> xNdx = xOldChild ;
- pAttr = ((struct tAttrData * )(pOldChild + 1)) ;
- n = pNode -> numAttr ;
- pLookup = pDomTree -> pLookup ;
+ pAttr = ((struct tAttrData * )(pOldChild + 1)) ;
+ n = pNode -> numAttr ;
+ pLookup = pDomTree -> pLookup ;
- while (n > 0)
- {
- if (pAttr -> xName)
- NdxStringRefcntInc (pAttr -> xName) ;
- if (pAttr -> xValue && (pAttr -> bFlags & aflgAttrValue))
- NdxStringRefcntInc (pAttr -> xValue) ;
- pLookup[pAttr -> xNdx].pLookup = pAttr ;
- n-- ;
- pAttr++ ;
- }
-
- pAttr = ((struct tAttrData * )(pOldChild + 1)) + pOldChild -> numAttr ;
- n = numAttr - pNode -> numAttr ;
+ while (n > 0)
+ {
+ if (pAttr -> xName)
+ NdxStringRefcntInc (pAttr -> xName) ;
+ if (pAttr -> xValue && (pAttr -> bFlags & aflgAttrValue))
+ NdxStringRefcntInc (pAttr -> xValue) ;
+ pLookup[pAttr -> xNdx].pLookup = pAttr ;
+ n-- ;
+ pAttr++ ;
+ }
+
+ pAttr = ((struct tAttrData * )(pOldChild + 1)) + pOldChild -> numAttr ;
+ n = numAttr - pNode -> numAttr ;
- while (n > 0)
- {
- pAttr -> bFlags = nflgDeleted ;
- if (pAttr -> xName)
- NdxStringFree (pAttr -> xName) ;
- if (pAttr -> xValue && (pAttr -> bFlags & aflgAttrValue))
- NdxStringFree (pAttr -> xValue) ;
- n-- ;
- pAttr++ ;
- }
+ while (n > 0)
+ {
+ pAttr -> bFlags = nflgDeleted ;
+ if (pAttr -> xName)
+ NdxStringFree (pAttr -> xName) ;
+ if (pAttr -> xValue && (pAttr -> bFlags & aflgAttrValue))
+ NdxStringFree (pAttr -> xValue) ;
+ n-- ;
+ pAttr++ ;
}
if (pOldChild -> nType == ntypDocument)
@@ -2334,7 +2395,7 @@
if (pOldChild -> nType == ntypDocumentFraq)
{
- tAttrData * pAttr = Element_selfSetAttribut (pOldChildDomTree, pOldChild,
nOldRepeatLevel, NULL, xDomTreeAttr, NULL, pDomTree -> xNdx, 0) ;
+ tAttrData * pAttr = Element_selfSetAttribut (pOldChildDomTree, pOldChild,
nOldRepeatLevel, NULL, xDomTreeAttr, NULL, pDomTree -> xNdx) ;
pAttr -> bFlags = aflgOK ; /* reset string value flag */
}
@@ -2365,7 +2426,6 @@
/*in*/ tRepeatLevel nRefRepeatLevel)
{
- int bFlags = nflgModified | nflgReturn ;
tNodeData * pNewNode = Node_selfLevel (pNewNodeDomTree, xNewNode,
nNewRepeatLevel) ;
tNodeData * pRefNode = Node_selfLevel (pRefNodeDomTree, xRefNode,
nRefRepeatLevel) ;
tNodeData * pNxtNode = Node_selfNextSibling (pRefNodeDomTree,
pRefNode, nRefRepeatLevel) ;
@@ -2379,7 +2439,7 @@
pNew -> nText = pNewNode -> nText ;
pNew -> xChilds = pNewNode -> xChilds ;
pNew -> nType = pNewNode -> nType ;
- pNew -> bFlags = pNewNode -> bFlags | nflgModified | nflgReturn ;
+ pNew -> bFlags = pNewNode -> bFlags ;
if (pNew -> nText)
NdxStringRefcntInc (pNew -> nText) ;
@@ -2392,16 +2452,11 @@
else
pNxtNode = Node_selfLevel (pRefNodeDomTree, pRefNode -> xNext,
nRefRepeatLevel) ; /* first one */
- if ((pNxtNode -> bFlags & nflgModified) == 0)
- {
- xOrgNode = pNewNode -> xNdx ;
- pNxtNode -> xPrev = pNewNode -> xNdx ;
- pRefNode -> xNext = pNewNode -> xNdx ;
- pNewNode -> xPrev = pRefNode -> xNdx ;
- pNewNode -> xNext = pNxtNode -> xNdx ;
- }
- else
- xOrgNode = pNxtNode -> xNdx ;
+ xOrgNode = pNewNode -> xNdx ;
+ pNxtNode -> xPrev = pNewNode -> xNdx ;
+ pRefNode -> xNext = pNewNode -> xNdx ;
+ pNewNode -> xPrev = pRefNode -> xNdx ;
+ pNewNode -> xNext = pNxtNode -> xNdx ;
if (pNewNode -> nType == ntypDocument)
{
@@ -2416,7 +2471,7 @@
if (pNewNode -> nType == ntypDocumentFraq)
{
- tAttrData * pAttr = Element_selfSetAttribut (pRefNodeDomTree, pNewNode,
nRefRepeatLevel, NULL, xDomTreeAttr, NULL, pNewNodeDomTree -> xNdx, 0) ;
+ tAttrData * pAttr = Element_selfSetAttribut (pRefNodeDomTree, pNewNode,
nRefRepeatLevel, NULL, xDomTreeAttr, NULL, pNewNodeDomTree -> xNdx) ;
pAttr -> bFlags = aflgOK ; /* reset string value flag */
}
@@ -2469,16 +2524,11 @@
pNxtNode = Node_selfCondCloneNode (pRefNodeDomTree, pNxtNode,
nRefRepeatLevel) ;
else
pNxtNode = Node_selfLevel (pRefNodeDomTree, pRefNode -> xNext,
nRefRepeatLevel) ; /* first one */
-
- /* if ((pNxtNode -> bFlags & nflgModified) == 0) */
- {
- pNxtNode -> xPrev = pNew -> xNdx ;
- pRefNode -> xNext = pNew -> xNdx ;
- pNew -> xPrev = pRefNode -> xNdx ;
- pNew -> xNext = pNxtNode -> xNdx ;
- }
- /* DomTree_selfCheckpoint (pRefNodeDomTree, xRefNode, pNew -> xNdx) ; */
+ pNxtNode -> xPrev = pNew -> xNdx ;
+ pRefNode -> xNext = pNew -> xNdx ;
+ pNew -> xPrev = pRefNode -> xNdx ;
+ pNew -> xNext = pNxtNode -> xNdx ;
return pNew -> xNdx ;
}
@@ -2794,7 +2844,7 @@
tNodeData * pNode = Node_selfLevel (pDomTree, xNode, nRepeatLevel) ;
- if (pNode -> nRepeatLevel)
+ if (pNode -> nType != ntypAttr && pNode -> nRepeatLevel)
nRepeatLevel = pNode -> nRepeatLevel ;
if (pNode -> nType == ntypDocumentFraq)
@@ -3204,8 +3254,7 @@
/*in*/ const char * sAttrName,
/*in*/ int nAttrNameLen,
/*in*/ const char * sNewValue,
- /*in*/ int nNewValueLen,
- /*in*/ int bClone)
+ /*in*/ int nNewValueLen)
{
tAttrData * pAttr ;
@@ -3220,17 +3269,6 @@
tIndex xValue = sNewValue?String2NdxNoInc (sNewValue,
nNewValueLen):nNewValueLen ;
NdxStringRefcntInc (xValue) ;
- if (bClone)
- {
- if (pAttr -> xValue != xValue && (pNode -> bFlags & nflgModified))
- {
- pNewNode = Node_selfCloneNode (pDomTree, pNode, nRepeatLevel, 1) ;
- pAttr = Element_selfGetAttribut (pDomTree, pNewNode, sAttrName,
nAttrNameLen) ;
- }
-
- pNode -> bFlags |= nflgReturn | nflgModified ;
- }
-
if (pAttr -> xValue && (pAttr -> bFlags & aflgAttrValue))
NdxStringFree (pAttr -> xValue) ;
@@ -3238,10 +3276,7 @@
return pAttr ;
}
- if ((pNode -> bFlags & nflgModified) && bClone)
- pNewNode = Node_selfCloneNode (pDomTree, pNode, nRepeatLevel, 1) ;
- else
- pNewNode = pNode ;
+ pNewNode = pNode ;
xAttr = Node_appendChild (pDomTree, pNewNode -> xNdx, nRepeatLevel, ntypAttr,
0, sAttrName, nAttrNameLen, 0, pNewNode -> nLinenumber, NULL) ;
@@ -3263,25 +3298,13 @@
tAttrData * Element_selfRemoveAttributPtr (/*in*/ tDomTree *
pDomTree,
/*in*/ struct tNodeData * pNode,
/*in*/ tRepeatLevel nRepeatLevel,
- /*in*/ tAttrData * pAttr,
- /*in*/ int bClone)
+ /*in*/ tAttrData * pAttr)
{
tNodeData * pNewNode ;
pNode = Node_selfCondCloneNode (pDomTree, pNode, nRepeatLevel) ;
- if (bClone)
- {
- if (pAttr != NULL && (pNode -> bFlags & nflgModified))
- {
- pNode -> bFlags |= nflgReturn | nflgModified ;
-
- pNewNode = Node_selfCloneNode (pDomTree, pNode, nRepeatLevel, 1) ;
- //???? pAttr = Element_selfGetAttribut (pDomTree, pNewNode, sAttrName,
nAttrNameLen) ;
- }
- }
-
if (pAttr)
{
pAttr -> bFlags = 0 ;
@@ -3319,8 +3342,7 @@
/*in*/ struct tNodeData * pNode,
/*in*/ tRepeatLevel nRepeatLevel,
/*in*/ const char * sAttrName,
- /*in*/ int nAttrNameLen,
- /*in*/ int bClone)
+ /*in*/ int nAttrNameLen)
{
tAttrData * pAttr ;
@@ -3329,7 +3351,7 @@
pAttr = Element_selfGetAttribut (pDomTree, pNode, sAttrName, nAttrNameLen) ;
- return Element_selfRemoveAttributPtr (pDomTree, pNode, nRepeatLevel, pAttr,
bClone) ;
+ return Element_selfRemoveAttributPtr (pDomTree, pNode, nRepeatLevel, pAttr) ;
}
tAttrData * Element_selfRemoveNthAttribut (/*in*/ tDomTree *
pDomTree,
@@ -3344,7 +3366,7 @@
pAttr = Element_selfGetNthAttribut (pDomTree, pNode, n) ;
- return Element_selfRemoveAttributPtr (pDomTree, pNode, nRepeatLevel, pAttr, 0) ;
+ return Element_selfRemoveAttributPtr (pDomTree, pNode, nRepeatLevel, pAttr) ;
}
@@ -3397,29 +3419,8 @@
{
char * s ;
int 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) ;
+ Ndx2StringLen (pNode -> nText,s,l) ;
StringAdd (ppAttr, s, l) ;
pNode = Node_selfNextSibling (pDomTree, pNode, nRepeatLevel) ;
}
1.4.2.37 +24 -12 embperl/Attic/epdom.h
Index: epdom.h
===================================================================
RCS file: /home/cvs/embperl/Attic/epdom.h,v
retrieving revision 1.4.2.36
retrieving revision 1.4.2.37
diff -u -r1.4.2.36 -r1.4.2.37
--- epdom.h 2001/10/28 19:29:52 1.4.2.36
+++ epdom.h 2001/10/29 20:07:12 1.4.2.37
@@ -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.36 2001/10/28 19:29:52 richter Exp $
+# $Id: epdom.h,v 1.4.2.37 2001/10/29 20:07:12 richter Exp $
#
###################################################################################*/
@@ -136,9 +136,6 @@
nflgEscUrl = 2,
nflgEscChar = 4,
nflgIgnore = 8,
- nflgModified = 16,
- nflgCheckpoint = 32,
- nflgReturn = 64,
nflgSubCheckpoint= 128
} ;
@@ -365,8 +362,26 @@
#define DomTree_self(xDomTree) (&pDomTrees[xDomTree])
#define Node_self(pDomTree,xNode) ((struct tNodeData *)(pDomTree ->
pLookup[xNode].pLookup))
-#define Node_selfLevel(pDomTree,xNode,nLevel) (pDomTree ->
pLookup[xNode].pLookup?((((struct tNodeData *)(pDomTree -> pLookup[xNode].pLookup)) ->
nRepeatLevel == nLevel || pDomTree -> pLookup[xNode].pLookupLevel == NULL)?((struct
tNodeData *)(pDomTree ->
pLookup[xNode].pLookup)):Node_selfLevelItem(pDomTree,xNode,nLevel)):NULL)
-#define Node_selfNotNullLevel(pDomTree,xNode,nLevel) (pDomTree ->
pLookup[xNode].pLookup?((((struct tNodeData *)(pDomTree -> pLookup[xNode].pLookup)) ->
nRepeatLevel == nLevel || ((struct tNodeData *)(pDomTree -> pLookup[xNode].pLookup))
-> nRepeatLevel != 0 || pDomTree -> pLookup[xNode].pLookupLevel == NULL)?((struct
tNodeData *)(pDomTree ->
pLookup[xNode].pLookup)):Node_selfLevelItem(pDomTree,xNode,nLevel)):NULL)
+#define Node_selfLevel(pDomTree,xNode,nLevel) \
+ (pDomTree -> pLookup[xNode].pLookup == NULL?NULL: \
+ (((struct tNodeData *)(pDomTree ->
pLookup[xNode].pLookup)) -> nRepeatLevel == nLevel? \
+ ((struct tNodeData *)(pDomTree ->
pLookup[xNode].pLookup)): \
+ Node_selfLevelItem(pDomTree,xNode,nLevel)))
+
+#define Node_selfNotNullLevel(pDomTree,xNode,nLevel) \
+ (pDomTree -> pLookup[xNode].pLookup == NULL?NULL: \
+ (((struct tNodeData *)(pDomTree ->
pLookup[xNode].pLookup)) -> xDomTree == pDomTree -> xNdx? \
+ ((struct tNodeData *)(pDomTree ->
pLookup[xNode].pLookup)): \
+ Node_selfLevelItem(pDomTree,xNode,nLevel)))
+#if 0
+ (pDomTree -> pLookup[xNode].pLookup == ? \
+ ((((struct tNodeData *)(pDomTree ->
pLookup[xNode].pLookup)) -> nRepeatLevel == nLevel || \
+ ((struct tNodeData *)(pDomTree ->
pLookup[xNode].pLookup)) -> nRepeatLevel != 0 || \
+ pDomTree -> pLookup[xNode].pLookupLevel == NULL)? \
+ ((struct tNodeData *)(pDomTree ->
pLookup[xNode].pLookup)): \
+ Node_selfLevelItem(pDomTree,xNode,nLevel)): \
+ NULL)
+#endif
#define xNode_selfLevelNull(pDomTree,pNode) ((pDomTree) ->
pLookup[(pNode)->xNdx].pLookupLevel?(pDomTree) -> pLookup[(pNode)->xNdx].pLookupLevel
-> xNullNode:(pNode) -> xNdx)
@@ -473,14 +488,12 @@
/*in*/ const char * sAttrName,
/*in*/ int nAttrNameLen,
/*in*/ const char * sNewValue,
- /*in*/ int nNewValueLen,
- /*in*/ int bClone) ;
+ /*in*/ int nNewValueLen) ;
tAttrData * Element_selfRemoveAttributPtr (/*in*/ tDomTree *
pDomTree,
/*in*/ struct tNodeData * pNode,
/*in*/ tRepeatLevel nRepeatLevel,
- /*in*/ tAttrData * pAttr,
- /*in*/ int bClone) ;
+ /*in*/ tAttrData * pAttr) ;
tAttrData * Element_selfRemoveNthAttribut (/*in*/ tDomTree *
pDomTree,
/*in*/ struct tNodeData * pNode,
@@ -492,8 +505,7 @@
/*in*/ struct tNodeData * pNode,
/*in*/ tRepeatLevel nRepeatLevel,
/*in*/ const char * sAttrName,
- /*in*/ int nAttrNameLen,
- /*in*/ int bClone) ;
+ /*in*/ int nAttrNameLen) ;
#define Attr_self(pDomTree,xAttr) ((struct tAttrData *)(pDomTree ->
pLookup[xAttr].pLookup))
#define Attr_selfNode(pAttr) ((struct tNodeData * )(((tUInt8 *)pAttr) -
pAttr -> nNodeOffset))
No revision
No revision
1.1.2.3 +2 -2 embperl/test/cmp2/Attic/lists.htm
Index: lists.htm
===================================================================
RCS file: /home/cvs/embperl/test/cmp2/Attic/lists.htm,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- lists.htm 2000/09/14 05:08:31 1.1.2.2
+++ lists.htm 2001/10/29 20:07:13 1.1.2.3
@@ -132,9 +132,9 @@
<option value="C">3</option>
<option value="C" size=5>3</option>
+ <option selected value="D">4</option>
<option value="D" selected>4</option>
- <option value="D" selected>4</option>
- <option value="D" size=5 selected>4</option>
+ <option value="D" selected size=5>4</option>
<option value="E">5</option>
<option value="E">5</option>
No revision
No revision
1.4.6.8 +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.7
retrieving revision 1.4.6.8
diff -u -r1.4.6.7 -r1.4.6.8
--- table.htm 2001/10/28 19:29:53 1.4.6.7
+++ table.htm 2001/10/29 20:07:13 1.4.6.8
@@ -237,7 +237,7 @@
</td>
</tr>
</table>
-[#
+
[-
# build tight loop table with array data, multidimensional 5x6
@array = sort ("Hello", "World", "2000", "Hello", "World", "2000");
@@ -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]