richter 01/10/22 04:59:06
Modified: . Tag: Embperl2c epcmd2.c epdom.c epdom.h
Log:
Embperl 2 - tree structure rewrite
Revision Changes Path
No revision
No revision
1.4.2.12 +2 -2 embperl/Attic/epcmd2.c
Index: epcmd2.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epcmd2.c,v
retrieving revision 1.4.2.11
retrieving revision 1.4.2.12
diff -u -r1.4.2.11 -r1.4.2.12
--- epcmd2.c 2001/10/22 06:25:01 1.4.2.11
+++ epcmd2.c 2001/10/22 11:59:06 1.4.2.12
@@ -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.11 2001/10/22 06:25:01 richter Exp $
+# $Id: epcmd2.c,v 1.4.2.12 2001/10/22 11:59:06 richter Exp $
#
###################################################################################*/
@@ -27,8 +27,8 @@
static embperlCmd_SetRemove (/*i/o*/ register req * r,
/*in*/ tDomTree * pDomTree,
- /*in*/ tRepeatLevel nRepeatLevel,
/*in*/ tNode xNode,
+ /*in*/ tRepeatLevel nRepeatLevel,
/*in*/ const char * pName,
/*in*/ int nNameLen,
/*in*/ const char * pVal,
1.4.2.52 +31 -27 embperl/Attic/epdom.c
Index: epdom.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epdom.c,v
retrieving revision 1.4.2.51
retrieving revision 1.4.2.52
diff -u -r1.4.2.51 -r1.4.2.52
--- epdom.c 2001/10/22 08:05:31 1.4.2.51
+++ epdom.c 2001/10/22 11:59:06 1.4.2.52
@@ -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.51 2001/10/22 08:05:31 richter Exp $
+# $Id: epdom.c,v 1.4.2.52 2001/10/22 11:59:06 richter Exp $
#
###################################################################################*/
@@ -676,16 +676,13 @@
{
tRepeatLevelLookup * pLookupLevelNode ;
- if (!pDomTree -> pLookupLevel)
- return NULL ;
-
- pLookupLevelNode = pDomTree -> pLookupLevel[xNode] ;
+ 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 *)(pDomTree -> pLookup[xNode])) ;
+ return ((struct tNodeData *)(pDomTree -> pLookup[xNode].pLookup)) ;
if (pLnNode -> nRepeatLevel == nLevel)
return pLnNode ;
while (pLookupLevelNodeLevel = pLookupLevelNodeLevel -> pNext)
@@ -695,7 +692,7 @@
return pLnNode ;
}
}
- return ((struct tNodeData *)(pDomTree -> pLookup[xNode])) ;
+ return ((struct tNodeData *)(pDomTree -> pLookup[xNode].pLookup)) ;
}
@@ -832,7 +829,7 @@
tDomTree * pDomTree ;
pDomTree = DomTree_alloc () ;
- ArrayNew (&pDomTree -> pLookup, 256, sizeof (struct tNodeData *)) ;
+ ArrayNew (&pDomTree -> pLookup, 256, sizeof (tLookupItem)) ;
ArrayAdd (&pDomTree -> pLookup, 1) ;
ArrayNew (&pDomTree -> pOrder, 256, sizeof (tDomTreeOrder)) ;
@@ -853,7 +850,7 @@
static int DomTree_dodelete (tDomTree * pDomTree)
{
- tNodeData * * pLookup = (tNodeData * *)pDomTree -> pLookup ;
+ tLookupItem * pLookup = pDomTree -> pLookup ;
int numLookup ;
tIndex xDomTree = pDomTree -> xNdx ;
tIndex xNdx ;
@@ -872,7 +869,7 @@
pLookup += numLookup - 1 ;
while (numLookup-- > 0)
{
- tNodeData * pNode = *pLookup ;
+ tNodeData * pNode = pLookup -> pLookup ;
if (pNode && pNode -> nType != (tNodeType)ntypAttr && xDomTree == pNode ->
xDomTree)
{
@@ -1224,7 +1221,8 @@
memcpy (pNew, pNode, len) ;
xNewNode = ArrayAdd (&pDomTree -> pLookup, 1) ;
- pDomTree -> pLookup[xNewNode] = pNew ;
+ pDomTree -> pLookup[xNewNode].pLookup = pNew ;
+ pDomTree -> pLookup[xNewNode].pLookupLevel = NULL ;
pNew -> xNdx = xNewNode ;
pNew -> bFlags &= ~nflgModified ;
pNew -> xDomTree = pDomTree -> xNdx ;
@@ -1243,7 +1241,8 @@
while (n)
{
xNewNode = ArrayAdd (&pDomTree -> pLookup, 1) ;
- pDomTree -> pLookup[xNewNode] = pAttr ;
+ pDomTree -> pLookup[xNewNode].pLookup = pAttr ;
+ pDomTree -> pLookup[xNewNode].pLookupLevel = NULL ;
pAttr -> xNdx = xNewNode ;
if (pAttr -> xName)
NdxStringRefcntInc (pAttr -> xName) ;
@@ -1295,7 +1294,7 @@
tNodeData * pNew ;
tAttrData * pAttr ;
int n ;
- void * * pLookup ;
+ tLookupItem * pLookup ;
tNode xNdx ;
tRepeatLevelLookup * pLookupLevelNode ;
tRepeatLevelLookupItem * pLookupLevelNodeLevel ;
@@ -1310,7 +1309,7 @@
len = sizeof (tNodeData) + pNode -> numAttr * sizeof (tAttrData) ;
xNdx = pNode -> xNdx ;
- if ((pLookup[xNdx] = pNew = dom_malloc (len)) == NULL)
+ if ((pLookup[xNdx].pLookup = pNew = dom_malloc (len)) == NULL)
return NULL ;
numNodes++ ;
@@ -1328,7 +1327,7 @@
while (n)
{
- pLookup[pAttr -> xNdx] = pAttr ;
+ pLookup[pAttr -> xNdx].pLookup = pAttr ;
if (pAttr -> xName)
NdxStringRefcntInc (pAttr -> xName) ;
if (pAttr -> xValue && (pAttr -> bFlags & aflgAttrValue))
@@ -1343,10 +1342,10 @@
if (!(pNew = Node_selfCloneNode (pDomTree, pNode, nRepeatLevel, 1)))
return NULL ;
- pLookupLevelNode = pDomTree -> pLookupLevel[pNode -> xNdx] ;
+ pLookupLevelNode = pLookup[pNode -> xNdx].pLookupLevel ;
if (!pLookupLevelNode)
{
- if ((pLookupLevelNode = pDomTree -> pLookupLevel[pNode -> xNdx] =
+ if ((pLookupLevelNode = pLookup[pNode -> xNdx].pLookupLevel =
(tRepeatLevelLookup *)dom_malloc (sizeof (tRepeatLevelLookup) +
sizeof (tRepeatLevelLookupItem) * 7)) == NULL)
return NULL ;
pLookupLevelNode -> nMask = 7 ;
@@ -1402,8 +1401,9 @@
if (nSize == 0)
nSize = sizeof (tNodeData) ;
- if ((pDomTree -> pLookup[xNdx] = pNewChild = dom_malloc (nSize)) == NULL)
+ if ((pDomTree -> pLookup[xNdx].pLookup = pNewChild = dom_malloc (nSize)) ==
NULL)
return NULL ;
+ pDomTree -> pLookup[xNdx].pLookupLevel = NULL ;
memset (pNewChild, 0, nSize) ;
pNewChild -> xParent = xParent ;
@@ -1469,16 +1469,18 @@
if (pNewChild != pNode)
{
tAttrData * pAttr = ((struct tAttrData * )(pNewChild + 1)) ;
- void * * pLookup = pDomTree -> pLookup ;
+ tLookupItem * pLookup = pDomTree -> pLookup ;
if (numOldAttr == (tUInt16) -1)
numOldAttr = pNewChild -> numAttr ;
- pLookup[xNdx] = pNewChild ;
+ pLookup[xNdx].pLookup = pNewChild ;
+ pLookup[xNdx].pLookupLevel = NULL ;
while (numOldAttr--)
{
- pLookup[pAttr -> xNdx] = pAttr ;
+ pLookup[pAttr -> xNdx].pLookup = pAttr ;
+ pLookup[pAttr -> xNdx].pLookupLevel = NULL ;
pAttr++ ;
}
}
@@ -1542,7 +1544,8 @@
pNew = ((struct tAttrData * )(pParent + 1)) + pParent -> numAttr ;
xNdx = ArrayAdd (&pDomTree -> pLookup, 1) ;
- pDomTree -> pLookup[xNdx] = (struct tNodeData *)pNew ;
+ pDomTree -> pLookup[xNdx].pLookup = (struct tNodeData *)pNew ;
+ pDomTree -> pLookup[xNdx].pLookupLevel = NULL ;
pNew -> xName = sText?String2NdxNoInc (sText, nTextLen):nTextLen ;
NdxStringRefcntInc (pNew -> xName) ;
@@ -1595,7 +1598,7 @@
if (!(xParent = Node_appendChild (pDomTree, xParent, nRepeatLevel,
ntypAttr, 0, NULL, xNoName, nLevel, nLinenumber, "<noname>")))
return 0 ;
nLevel++ ;
- pNew = (struct tAttrData * )pDomTree -> pLookup[xParent] ;
+ pNew = Attr_self (pDomTree, xParent) ;
}
else
{ /* --- dummy attribute already exist, reuse it --- */
@@ -1709,11 +1712,12 @@
}
- pDomTree -> pLookup[pChild -> xNdx] = NULL ;
+ pDomTree -> pLookup[pChild -> xNdx].pLookup = NULL ;
+ pDomTree -> pLookup[pChild -> xNdx].pLookupLevel = NULL ;
{
- tRepeatLevelLookup * pLookupLevelNode = pDomTree -> pLookupLevel[pChild ->
xNdx] ;
+ tRepeatLevelLookup * pLookupLevelNode = pDomTree -> pLookup[pChild ->
xNdx].pLookupLevel ;
if (pLookupLevelNode)
{
register tRepeatLevelLookupItem * pLookupLevelNodeLevel =
&pLookupLevelNode -> items[pChild -> nRepeatLevel & pLookupLevelNode -> nMask] ;
@@ -1813,7 +1817,7 @@
int nOffset ;
tAttrData * pAttr ;
int n ;
- void * * pLookup ;
+ tLookupItem * pLookup ;
pOldChild = Node_selfExpand (pOldChildDomTree, pOldChild, 0, pNode ->
numAttr) ;
@@ -1855,7 +1859,7 @@
NdxStringRefcntInc (pAttr -> xName) ;
if (pAttr -> xValue && (pAttr -> bFlags & aflgAttrValue))
NdxStringRefcntInc (pAttr -> xValue) ;
- pLookup[pAttr -> xNdx] = pAttr ;
+ pLookup[pAttr -> xNdx].pLookup = pAttr ;
n-- ;
pAttr++ ;
}
1.4.2.30 +13 -6 embperl/Attic/epdom.h
Index: epdom.h
===================================================================
RCS file: /home/cvs/embperl/Attic/epdom.h,v
retrieving revision 1.4.2.29
retrieving revision 1.4.2.30
diff -u -r1.4.2.29 -r1.4.2.30
--- epdom.h 2001/10/22 08:05:31 1.4.2.29
+++ epdom.h 2001/10/22 11:59:06 1.4.2.30
@@ -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.29 2001/10/22 08:05:31 richter Exp $
+# $Id: epdom.h,v 1.4.2.30 2001/10/22 11:59:06 richter Exp $
#
###################################################################################*/
@@ -177,11 +177,18 @@
typedef struct tRepeatLevelLookup tRepeatLevelLookup ;
+struct tLookupItem
+ {
+ void * pLookup ; /* table for converting tNode and tAttr to pointers */
+ tRepeatLevelLookup * pLookupLevel ; /* hash table used to index
xNode/nRepeatLevel */
+ } ;
+
+typedef struct tLookupItem tLookupItem ;
+
struct tDomTree
{
- void * * pLookup ; /* table for converting tNode and tAttr to pointers */
- tRepeatLevelLookup * * pLookupLevel ; /* hash table used to index
xNode/nRepeatLevel */
+ tLookupItem * pLookup ; /* table for converting tNode 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 */
@@ -329,8 +336,8 @@
#define DomTree_self(xDomTree) (&pDomTrees[xDomTree])
-#define Node_self(pDomTree,xNode) ((struct tNodeData *)(pDomTree ->
pLookup[xNode]))
-#define Node_selfLevel(pDomTree,xNode,nLevel) (pDomTree ->
pLookup[xNode]?((((struct tNodeData *)(pDomTree -> pLookup[xNode])) -> nRepeatLevel ==
nLevel || pDomTree -> pLookupLevel[xNode] == NULL)?((struct tNodeData *)(pDomTree ->
pLookup[xNode])):Node_selfLevelItem(pDomTree,xNode,nLevel)):NULL)
+#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_parentNode(pDomTree,xNode,nLevel)
(Node_selfLevel(pDomTree,xNode,nLevel)->xParent)
#define Node_selfParentNode(pDomTree,pNode,nLevel)
(Node_selfLevel(pDomTree,(pNode)->xParent,nLevel))
@@ -440,7 +447,7 @@
/*in*/ int nAttrNameLen,
/*in*/ int bClone) ;
-#define Attr_self(pDomTree,xAttr) ((struct tAttrData *)(pDomTree ->
pLookup[xAttr]))
+#define Attr_self(pDomTree,xAttr) ((struct tAttrData *)(pDomTree ->
pLookup[xAttr].pLookup))
#define Attr_selfNode(pAttr) ((struct tNodeData * )(((tUInt8 *)pAttr) -
pAttr -> nNodeOffset))
#define Attr_selfAttrNum(pAttr) (pAttr - Node_selfFirstAttr
(Attr_selfNode(pAttr)))
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]