richter     00/09/19 00:22:24

  Modified:    .        Tag: Embperl2c epcomp.c epdom.c epdom.h epparse.c
               Embperl  Tag: Embperl2c Syntax.pm
               test/html Tag: Embperl2c callsub.htm
  Log:
  Embperl 2 - subs
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.4.2.4   +19 -5     embperl/Attic/epcomp.c
  
  Index: epcomp.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epcomp.c,v
  retrieving revision 1.4.2.3
  retrieving revision 1.4.2.4
  diff -u -r1.4.2.3 -r1.4.2.4
  --- epcomp.c  2000/09/14 12:02:19     1.4.2.3
  +++ epcomp.c  2000/09/19 07:21:56     1.4.2.4
  @@ -1321,7 +1321,7 @@
        r -> nPhase  = phRunAfterCompile ;
        
        l = ArrayGetSize (pProgDef) ;
  -     if (pCurrReq -> bDebug & dbgParse)
  +     if (l && pCurrReq -> bDebug & dbgParse)
            lprintf (r, "[%d]EPCOMP: AfterCompileTimeCode:    %*.*s\n", r -> nPid, l, 
l, pProgDef) ; 
   
        pSV = newSVpvf("package %s ; \n%*.*s", r -> Buf.sEvalPackage, l,l, pProgDef) ;
  @@ -1362,12 +1362,18 @@
   
       if (!r -> bError)
        {
  +     char * sSubName = r -> sSubName ;
  +
  +     if (sSubName && !*sSubName)
  +         sSubName = NULL ;
        rc = ok ;
        cl1 = clock () ;
        
  +
        r -> nPhase  = phRun ;
   
  -     if (!(r -> xCurrDomTree  = DomTree_clone (pDomTree, &pCurrDomTree)))
  +         
  +     if (!(r -> xCurrDomTree  = DomTree_clone (pDomTree, &pCurrDomTree, 
sSubName?1:0)))
            return 1 ;
   
   
  @@ -1385,9 +1391,17 @@
            
            args[0] = r -> pReqSV ;
            args[1] = pCurrDomTree -> pDomTreeSV ;
  -         rc = CallStoredCV (r, pProgRun, (CV *)pSV, 2, args, 0, &pSV) ;
  -         if (pSV)
  -             SvREFCNT_dec (pSV) ;
  +         if (sSubName)
  +             {
  +             SV * pSVName = newSVpvf ("%s::%s", r -> Buf.sEvalPackage, sSubName) ;
  +             rc = CallStoredCV (r, pProgRun, (CV *)pSVName, 2, args, 0, &pSV) ;
  +             }
  +         else
  +             {
  +             rc = CallStoredCV (r, pProgRun, (CV *)pSV, 2, args, 0, &pSV) ;
  +             if (pSV)
  +                 SvREFCNT_dec (pSV) ;
  +             }
   
            cl2 = clock () ;
       #ifdef CLOCKS_PER_SEC
  
  
  
  1.4.2.2   +26 -14    embperl/Attic/epdom.c
  
  Index: epdom.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epdom.c,v
  retrieving revision 1.4.2.1
  retrieving revision 1.4.2.2
  diff -u -r1.4.2.1 -r1.4.2.2
  --- epdom.c   2000/09/14 12:02:19     1.4.2.1
  +++ epdom.c   2000/09/19 07:21:59     1.4.2.2
  @@ -33,6 +33,8 @@
   
   tIndex xNoName  = 0 ;
   tIndex xDomTreeAttr = 0 ;
  +tIndex xDocument ;
  +tIndex xDocumentFraq ;
   
   int nCheckpointCache = 0 ;
   int nCheckpointCacheMask = 0x1ff ;
  @@ -388,7 +390,10 @@
            {
            if (bInc)
                SvREFCNT_inc (*ppSV) ;
  -         return SvIVX (*ppSV) ;
  +         nNdx = SvIVX (*ppSV) ;
  +         //if (nNdx < 5 || nNdx == 92)
  +         //  lprintf (pCurrReq, "old string %s (#%d) refcnt=%d\n", Ndx2String 
(nNdx), nNdx, SvREFCNT(*ppSV)) ;
  +         return nNdx ;
            }
        }
   
  @@ -414,6 +419,9 @@
   
       numStr++ ;
   
  +    //if (nNdx < 5 || nNdx == 92)
  +    //       lprintf (pCurrReq, "new string %s (#%d) refcnt=%d\n", Ndx2String 
(nNdx), nNdx, SvREFCNT(pSVNdx)) ;
  +    
       return nNdx ;    
       }
   
  @@ -434,10 +442,8 @@
       
       SvREFCNT_dec (pSVNdx) ;
   
  -    /*
  -    if (nNdx == 3)
  -     lprintf (pCurrReq, "free string %s (#%d) refcnt=%d\n", Ndx2String (nNdx), 
nNdx, SvREFCNT(pSVNdx)) ;
  -    */
  +    //if (nNdx < 5 || nNdx == 92)
  +    //       lprintf (pCurrReq, "free string %s (#%d) refcnt=%d\n", Ndx2String 
(nNdx), nNdx, SvREFCNT(pSVNdx)) ;
       
       if (SvREFCNT(pSVNdx) == 1)
        {
  @@ -492,8 +498,10 @@
   
       numStr+=2 ;
   
  -    xNoName  = String2Ndx ("<noname>", 8) ;
  -    xDomTreeAttr = String2Ndx ("<domtree>", 9) ;
  +    xNoName       = String2Ndx ("<noname>", 8) ;
  +    xDomTreeAttr  = String2Ndx ("<domtree>", 9) ;
  +    xDocument     = String2Ndx ("Document", 8) ;
  +    xDocumentFraq = String2Ndx ("DocumentFraq", 12) ;
   
       ArrayNew (&pDomTrees, 16, sizeof (tDomTree)) ; 
       ArrayAdd (&pDomTrees, 1) ;
  @@ -702,7 +710,8 @@
   /* ------------------------------------------------------------------------ */
   
   int DomTree_clone (/*in*/ tDomTree * pOrgDomTree,
  -                /*out*/tDomTree * *  pNewDomTree)
  +                /*out*/tDomTree * *  pNewDomTree,
  +                /*in*/ int           bForceDocFraq)
   
       {
       tDomTree * pDomTree ;
  @@ -724,13 +733,15 @@
   
       pDocument = Node_self (pDomTree, pDomTree -> xDocument) ;
       
  -    if (pDocument -> nType == ntypDocumentFraq)
  +    if (bForceDocFraq || pDocument -> nType == ntypDocumentFraq)
        {
        tAttrData * pAttr; 
        pDocument = Node_selfCloneNode (pDomTree, pDocument, 1) ;
        pAttr = Element_selfSetAttribut (pDomTree, pDocument, NULL, xDomTreeAttr, 
NULL, pDomTree -> xNdx, 0) ;
        pAttr -> bFlags = aflgOK ; /* reset string value flag */
        pDomTree -> xDocument = pDocument -> xNdx ;
  +     pDocument -> nType = ntypDocumentFraq ;
  +     pDocument -> nText = xDocumentFraq ;
        }
       
   
  @@ -751,7 +762,7 @@
   
   
       {
  -    if (pCurrReq -> nPhase == phRun)
  +    if (pCurrReq -> nPhase == phRun || pCurrReq -> nPhase == phTerm)
        {
        tDomTree * pDomTree = DomTree_self (xDomTree) ;
        int n = ArrayAdd (&pDomTree -> pOrder, 1) ;
  @@ -775,7 +786,7 @@
   
   
       {
  -    if (pCurrReq -> nPhase == phRun)
  +    if (pCurrReq -> nPhase == phRun || pCurrReq -> nPhase == phTerm)
        {
        int n = ArrayAdd (&pDomTree -> pOrder, 1) ;
        (pDomTree -> pOrder)[n].xFromNode = xFromNode ;
  @@ -1235,6 +1246,7 @@
           xNdx = ArrayAdd (&pDomTree -> pLookup, 1) ;
        pDomTree -> pLookup[xNdx] = (struct tNodeData *)pNew ;
   
  +                            /* is NoInc ok ????? */
        pNew -> xName  = sText?String2NdxNoInc (sText, nTextLen):nTextLen ;
        NdxStringRefcntInc (pNew -> xName) ;
        pNew -> xValue = 0 ;
  @@ -1349,7 +1361,7 @@
            pChilds = NodePad_self (pDomTree, pParent -> xChilds) ;
            }
   
  -        pNew = NodePad_appendChild (pDomTree, &pChilds, nType, String2Ndx (sText, 
nTextLen), nLinenumber) ;
  +        pNew = NodePad_appendChild (pDomTree, &pChilds, nType, sText?String2Ndx 
(sText, nTextLen):nTextLen, nLinenumber) ;
        
        if (pCurrReq -> bDebug & dbgParse)
            lprintf (pCurrReq, "[%d]PARSE: AddNode: +%02d %*s Element parent=%d 
node=%d type=%d text=%*.*s (#%d)\n", pCurrReq -> nPid, nLevel, nLevel * 2, "", 
xParent, pNew -> xNdx, nType, nTextLen, nTextLen, sText, 
  @@ -1644,10 +1656,10 @@
       tNode    xOrgChild  = xOldChild ;
       tStringIndex n ;
       
  +    lprintf (pCurrReq, "rp1--> SVs=%d  %s  DomTree Old=%d\n", sv_count, sText, 
Node_selfDomTree (Node_self (pDomTree, xOldChild))) ;
  +
       Node_condClonePad (pDomTree, xOldChild) ; 
       pOldChild  = Node_self (pDomTree, xOldChild) ;
  -
  -    lprintf (pCurrReq, "rp1--> SVs=%d  %s  DomTree Old=%d\n", sv_count, sText, 
Node_selfDomTree (pOldChild)) ;
   
       xCheckpointCache[nCheckpointCache++] = xOldChild ;
   
  
  
  
  1.4.2.2   +4 -1      embperl/Attic/epdom.h
  
  Index: epdom.h
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epdom.h,v
  retrieving revision 1.4.2.1
  retrieving revision 1.4.2.2
  diff -u -r1.4.2.1 -r1.4.2.2
  --- epdom.h   2000/09/13 08:38:01     1.4.2.1
  +++ epdom.h   2000/09/19 07:22:00     1.4.2.2
  @@ -178,6 +178,8 @@
   extern HE * *              pStringTableArray  ;   /* Array with pointers to strings 
*/
   extern tIndex              xNoName ;              /* String index for Attribut with 
noname */
   extern tIndex              xDomTreeAttr ;         /* String index for Attribut 
which holds the DomTree index */
  +extern tIndex              xDocument ;            /* String index for Document */
  +extern tIndex              xDocumentFraq ;        /* String index for Document 
Fraquent */
   
   extern int nCheckpointCache ;
   extern int nCheckpointCacheMask ;
  @@ -226,7 +228,8 @@
   int DomInit (void) ;
   
   int DomTree_clone (/*in*/ tDomTree * pOrgDomTree,
  -                /*out*/tDomTree * *  pNewDomTree) ;
  +                /*out*/tDomTree * *  pNewDomTree,
  +                /*in*/ int           bForceDocFraq) ;
   
   int DomTree_new (tDomTree * * pNewLookup) ;
   
  
  
  
  1.4.2.2   +1 -1      embperl/Attic/epparse.c
  
  Index: epparse.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epparse.c,v
  retrieving revision 1.4.2.1
  retrieving revision 1.4.2.2
  diff -u -r1.4.2.1 -r1.4.2.2
  --- epparse.c 2000/09/13 08:38:02     1.4.2.1
  +++ epparse.c 2000/09/19 07:22:00     1.4.2.2
  @@ -723,7 +723,7 @@
       if (!(xDocNode = Node_appendChild (pDomTree,  ntypTag, 0, "attr", 3, 0, 0, 0)))
        return 1 ;
   
  -    if (!(xDocNode = Node_appendChild (pDomTree,  r -> 
bSubReq?ntypDocumentFraq:ntypDocument, 0, r -> bSubReq?"DocumentFraq":"Document", r -> 
bSubReq?12:8, 0, 0, 0)))
  +    if (!(xDocNode = Node_appendChild (pDomTree,  r -> 
bSubReq?ntypDocumentFraq:ntypDocument, 0, NULL, r -> bSubReq?xDocumentFraq:xDocument, 
0, 0, 0)))
        return 1 ;
       
       if (!(xNode = Node_appendChild (pDomTree,  ntypAttr, 0, NULL, xDomTreeAttr, 
xDocNode, 0, 0)))
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.4.3   +3 -1      embperl/Embperl/Attic/Syntax.pm
  
  Index: Syntax.pm
  ===================================================================
  RCS file: /home/cvs/embperl/Embperl/Attic/Syntax.pm,v
  retrieving revision 1.1.4.2
  retrieving revision 1.1.4.3
  diff -u -r1.1.4.2 -r1.1.4.3
  --- Syntax.pm 2000/09/14 12:02:24     1.1.4.2
  +++ Syntax.pm 2000/09/19 07:22:12     1.1.4.3
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: Syntax.pm,v 1.1.4.2 2000/09/14 12:02:24 richter Exp $
  +#   $Id: Syntax.pm,v 1.1.4.3 2000/09/19 07:22:12 richter Exp $
   #
   ###################################################################################
    
  @@ -793,6 +793,7 @@
                   stackname   => 'metacmd',
                   stackmatch  => 'Document',
                   'push'      => 'Document',
  +                mayjump     => 1,
                   }
               },
           },
  @@ -819,6 +820,7 @@
                   stackname   => 'metacmd',
                   stackmatch  => 'DocumentFraq',
                   'push'      => 'DocumentFraq',
  +                mayjump     => 1,
                   }
               },
           },
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.3.6.2   +2 -2      embperl/test/html/callsub.htm
  
  Index: callsub.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/callsub.htm,v
  retrieving revision 1.3.6.1
  retrieving revision 1.3.6.2
  diff -u -r1.3.6.1 -r1.3.6.2
  --- callsub.htm       2000/09/14 12:02:29     1.3.6.1
  +++ callsub.htm       2000/09/19 07:22:15     1.3.6.2
  @@ -35,12 +35,12 @@
   
   Now we call the first sub via Execute:
   
  -[# [- Execute ('#txt') -]
  +[- Execute ('#txt') -]
   
   And now the second via Execute:
   
   [- Execute ('#perl_code') -]
  -#]
  +
   Now we call the first sub via Perl:
   
   [- txt -]
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to