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...@apache.org on 2001/10/19 09:18:09 UTC

cvs commit: embperl epdom.c epdom.h

richter     01/10/19 00:18:09

  Modified:    .        Tag: Embperl2c epdom.c epdom.h
  Log:
  Embperl 2 - start rewrite of internal tree structure
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.4.2.48  +32 -1     embperl/Attic/epdom.c
  
  Index: epdom.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epdom.c,v
  retrieving revision 1.4.2.47
  retrieving revision 1.4.2.48
  diff -u -r1.4.2.47 -r1.4.2.48
  --- epdom.c	2001/09/13 08:13:02	1.4.2.47
  +++ epdom.c	2001/10/19 07:18:08	1.4.2.48
  @@ -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.47 2001/09/13 08:13:02 richter Exp $
  +#   $Id: epdom.c,v 1.4.2.48 2001/10/19 07:18:08 richter Exp $
   #
   ###################################################################################*/
   
  @@ -666,6 +666,37 @@
   	   }
   	}	   
       }
  +
  +
  +
  +tNodeData * Node_selfLevelItem (/*in*/ tDomTree *    pDomTree,
  +				/*in*/ tNode	 xNode,
  +				/*in*/ tRepeatLevel  nLevel)
  +
  +    {
  +    tRepeatLevelLookup * pLookupLevelNode = pDomTree -> pLookupLevel[xNode] ;
  +    if (pLookupLevelNode)
  +	{
  +	register tRepeatLevelLookupItem * pLookupLevelNodeLevel	= pLookupNodeLevel -> items[nLevel & pLookupNodeLevel -> nMask] ;
  +	register tNodeData *              pLnNode		= pLookupLevelNodeLevel -> pNode ;
  +	if (!pLnNode)
  +	    return ((struct tNodeData *)(pDomTree -> pLookup[xNode])) ;
  +	if (pLnNode -> nLevel == nLevel)
  +	    return pLnNode ;
  +	while (pLookupLevelNodeLevel = pLookupLevelNodeLevel -> pNext)
  +	    {
  +	    pLnNode = pLookupLevelNodeLevel -> pNode ;
  +	    if (pLnNode -> nLevel == nLevel)
  +		return pLnNode ;
  +	    }
  +	}
  +    return ((struct tNodeData *)(pDomTree -> pLookup[xNode])) ;
  +    }
  +
  +
  +#define Node_selfLevel(pDomTree,xNode,nLevel)  (!nLevel || !pDomTree -> pLookupLevel[xNode])?Node_selfLevelItem(pDomTree,xNode,nLevel):((struct tNodeData *)(pDomTree -> pLookup[xNode])))
  +
  +
   
   
   /* ------------------------------------------------------------------------ */
  
  
  
  1.4.2.26  +22 -1     embperl/Attic/epdom.h
  
  Index: epdom.h
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epdom.h,v
  retrieving revision 1.4.2.25
  retrieving revision 1.4.2.26
  diff -u -r1.4.2.25 -r1.4.2.26
  --- epdom.h	2001/10/16 11:51:23	1.4.2.25
  +++ epdom.h	2001/10/19 07:18:08	1.4.2.26
  @@ -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.25 2001/10/16 11:51:23 richter Exp $
  +#   $Id: epdom.h,v 1.4.2.26 2001/10/19 07:18:08 richter Exp $
   #
   ###################################################################################*/
   
  @@ -39,6 +39,7 @@
   typedef tUInt8          tNodeType ;
   typedef tIndex		tNode	 ;
   typedef tIndex		tAttr	 ;
  +typedef tUInt16         tRepeatLevel ;
   
   
   struct tNodeData
  @@ -54,6 +55,7 @@
       tNode		xPrev ;
       tNode		xNext ;
       tNode		xParent ;
  +    tRepeatLevel	nRepeatLevel ;
       } ;
   
   typedef struct tNodeData tNodeData ;
  @@ -158,9 +160,28 @@
   typedef struct tDomTreeOrder tDomTreeOrder ;
   
   
  +struct tRepeatLevelLookupItem
  +    {
  +    tNodeData	*	    pNode ;	/* pointer to actual node data */
  +    tRepeatLevelLookup	*   pNode ;	/* next node with same node index but different nRepeatLevel */
  +    } ;
  +
  +typedef struct tRepeatLevelLookupItem tRepeatLevelLookupItem ;
  +
  +struct tRepeatLevelLookup
  +    {
  +    tRepeatLevel	    numItems ;	/* size of table (must be 2^n) */
  +    tRepeatLevel	    nMask ;	/* mask (usualy numItems - 1) */
  +    tRepeatLevelLookupItem  items[] ;	/* array with numItems items */
  +    } ;
  +
  +typedef struct tRepeatLevelLookupItem tRepeatLevelLookupItem ;
  +
  +
   struct tDomTree
       {
       void * *	    pLookup ;	/* table for converting tNode and tAttr to pointers */
  +    tRepeatLevelLookup * * pLookupLevel ; /* hash table used to index xNode/nRepeatLevel */
       tDomTreeOrder * pOrder ;	/* Order of dom tree after execution of code */
       tIndex	    xNdx ;	/* Index of Dom Tree */
       tNode	    xDocument ;	/* root document node */
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org