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]

Reply via email to