[BACK]Return to comp.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / parse

Diff for /OpenXM_contrib2/asir2000/parse/comp.c between version 1.4 and 1.7

version 1.4, 2000/12/05 01:24:56 version 1.7, 2003/08/21 08:05:02
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/parse/comp.c,v 1.3 2000/08/22 05:04:25 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/parse/comp.c,v 1.6 2003/05/14 06:20:11 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
 #include "comp.h"  #include "comp.h"
 #if defined(VISUAL)  #if defined(VISUAL) || (defined(__MACH__) && defined(__ppc__)) || defined(__FreeBSD__)
 #include <stdarg.h>  #include <stdarg.h>
 #else  #else
 #include <varargs.h>  #include <varargs.h>
Line 58 
Line 58 
   
 extern f_return;  extern f_return;
   
 #if defined(VISUAL)  #if defined(VISUAL) || (defined(__MACH__) && defined(__ppc__)) || defined(__FreeBSD__)
 void call_usrf(FUNC f,...)  void call_usrf(FUNC f,...)
 {  {
         va_list ap;          va_list ap;
         int ac,i;          int ac,i;
         pointer *c;          pointer *c;
           VS prev_mpvs;
         NODE tn;          NODE tn;
   
         va_start(ap,f);          va_start(ap,f);
Line 71  void call_usrf(FUNC f,...)
Line 72  void call_usrf(FUNC f,...)
                 notdef(0,0,0,0);                  notdef(0,0,0,0);
         else {          else {
                 pushpvs(f);                  pushpvs(f);
                   if ( f->f.usrf->module ) {
                           prev_mpvs = MPVS;
                           MPVS = f->f.usrf->module->pvs;
                   }
                 ac = va_arg(ap,int);                  ac = va_arg(ap,int);
                 for ( i = 0, tn = f->f.usrf->args; i < ac;                  for ( i = 0, tn = f->f.usrf->args; i < ac;
                         i++, tn = NEXT(tn) )                          i++, tn = NEXT(tn) )
Line 78  void call_usrf(FUNC f,...)
Line 83  void call_usrf(FUNC f,...)
                 c = va_arg(ap,pointer *); *c = evalstat(BDY(f->f.usrf));                  c = va_arg(ap,pointer *); *c = evalstat(BDY(f->f.usrf));
                 va_end(ap);                  va_end(ap);
                 f_return = 0; poppvs();                  f_return = 0; poppvs();
                   if ( f->f.usrf->module )
                           MPVS = prev_mpvs;
         }          }
 }  }
 #else  #else
Line 88  va_dcl
Line 95  va_dcl
         int ac,i;          int ac,i;
         FUNC f;          FUNC f;
         pointer a,b,*c;          pointer a,b,*c;
           VS prev_mpvs;
         NODE tn;          NODE tn;
   
         va_start(ap); f = va_arg(ap,FUNC);          va_start(ap); f = va_arg(ap,FUNC);
Line 95  va_dcl
Line 103  va_dcl
                 notdef(0,0,0,0);                  notdef(0,0,0,0);
         else {          else {
                 pushpvs(f);                  pushpvs(f);
                   if ( f->f.usrf->module ) {
                           prev_mpvs = MPVS;
                           MPVS = f->f.usrf->module->pvs;
                   }
                 ac = va_arg(ap,int);                  ac = va_arg(ap,int);
                 for ( i = 0, tn = f->f.usrf->args; i < ac;                  for ( i = 0, tn = f->f.usrf->args; i < ac;
                         i++, tn = NEXT(tn) )                          i++, tn = NEXT(tn) )
                         ASSPV((int)FA0((FNODE)BDY(tn)),va_arg(ap,pointer));                          ASSPV((int)FA0((FNODE)BDY(tn)),va_arg(ap,pointer));
                 c = va_arg(ap,pointer *); *c = evalstat(BDY(f->f.usrf));                  c = va_arg(ap,pointer *); *c = evalstat(BDY(f->f.usrf));
                 f_return = 0; poppvs();                  f_return = 0; poppvs();
                   if ( f->f.usrf->module )
                           MPVS = prev_mpvs;
         }          }
 }  }
 #endif  #endif

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.7

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>