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

Diff for /OpenXM_contrib2/asir2000/parse/util.c between version 1.3 and 1.11

version 1.3, 2000/08/22 05:04:28 version 1.11, 2004/06/21 00:58:32
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/util.c,v 1.2 2000/08/21 08:31:47 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/parse/util.c,v 1.10 2003/08/23 01:42:53 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "base.h"  #include "base.h"
 #include "parse.h"  #include "parse.h"
 #if defined(THINK_C) || defined(VISUAL)  #if defined(__GNUC__) || defined(VISUAL) || (defined(__MACH__) && defined(__ppc__)) || defined(__FreeBSD__)
 #include <stdarg.h>  #include <stdarg.h>
 #else  #else
 #include <varargs.h>  #include <varargs.h>
Line 121  NODE ind;
Line 121  NODE ind;
 pointer *vp;  pointer *vp;
 {  {
         Obj len,row,col;          Obj len,row,col;
         int i,l;          int i;
         NODE n,n0;          NODE n,n0;
         VECT v;          VECT v;
           Q q;
   
           if ( a && OID(a) == O_BYTEARRAY ) {
                   len = (Obj)BDY(ind);
                   if ( !rangecheck(len,((BYTEARRAY)a)->len) )
                           error("getarray : Out of range");
                   else if ( NEXT(ind) )
                           error("getarray : invalid index");
                   else {
                           i = (int)BDY((BYTEARRAY)a)[QTOS((Q)len)];
                           STOQ(i,q);
                           *vp = (pointer)q;
                   }
                   return;
           }
         for ( ; ind; ind = NEXT(ind) ) {          for ( ; ind; ind = NEXT(ind) ) {
                 if ( !a )                  if ( !a )
                         error("getarray : array or list expected");                          error("getarray : array or list expected");
Line 155  pointer *vp;
Line 169  pointer *vp;
                                 break;                                  break;
                         case O_LIST:                          case O_LIST:
                                 n0 = BDY((LIST)a); i = QTOS((Q)BDY(ind));                                  n0 = BDY((LIST)a); i = QTOS((Q)BDY(ind));
                                 for ( l = 0, n = n0; n; n = NEXT(n), l++ );                                  if ( i < 0 )
                                 if ( i < 0 || i >= l )  
                                         error("getarray : Out of range");                                          error("getarray : Out of range");
                                 else {                                  for ( n = n0; i > 0 && n; n = NEXT(n), i-- );
                                         for ( n = n0, l = 0; l < i; l++, n = NEXT(n) );                                  if ( i || !n )
                                           error("getarray : Out of range");
                                   else
                                         a = (pointer)BDY(n);                                          a = (pointer)BDY(n);
                                 }  
                                 break;                                  break;
                         default:                          default:
                                 error("getarray : array or list expected");                                  error("getarray : array or list expected");
Line 177  NODE ind;
Line 191  NODE ind;
 pointer b;  pointer b;
 {  {
         Obj len,row,col;          Obj len,row,col;
         int i,l;          int i;
         NODE n,n0;          NODE n,n0;
   
           if ( a && OID(a) == O_BYTEARRAY ) {
                   len = (Obj)BDY(ind);
                   if ( !rangecheck(len,((BYTEARRAY)a)->len) )
                           error("putarray : Out of range");
                   else if ( NEXT(ind) )
                           error("putarray : invalid index");
                   else
                           BDY((BYTEARRAY)a)[QTOS((Q)len)] = (unsigned char)QTOS((Q)b);
                   return;
           }
         for ( ; ind; ind = NEXT(ind) ) {          for ( ; ind; ind = NEXT(ind) ) {
                 if ( !a )                  if ( !a )
                         error("putarray : array expected");                          error("putarray : array expected");
Line 212  pointer b;
Line 236  pointer b;
                         case O_LIST:                          case O_LIST:
                                 if ( NEXT(ind) ) {                                  if ( NEXT(ind) ) {
                                         n0 = BDY((LIST)a); i = QTOS((Q)BDY(ind));                                          n0 = BDY((LIST)a); i = QTOS((Q)BDY(ind));
                                         for ( l = 0, n = n0; n; n = NEXT(n), l++ );                                          if ( i < 0 )
                                         if ( i < 0 || i >= l )  
                                                 error("putarray : Out of range");                                                  error("putarray : Out of range");
                                         else {                                          for ( n = n0; i > 0 && n; n = NEXT(n), i-- );
                                                 for ( n = n0, l = 0; l < i; l++, n = NEXT(n) );                                          if ( i || !n )
                                                   error("puarray : Out of range");
                                           else
                                                 a = (pointer)BDY(n);                                                  a = (pointer)BDY(n);
                                         }  
                                 } else                                  } else
                                         error("putarray : invalid assignment");                                          error("putarray : invalid assignment");
                                 break;                                  break;
Line 261  P p;
Line 285  P p;
         return ( r );          return ( r );
 }  }
   
 #if defined(THINK_C) || defined(VISUAL)  #if defined(__GNUC__) || defined(VISUAL) || (defined(__MACH__) && defined(__ppc__)) || defined(__FreeBSD__)
 NODE mknode(int ac,...)  NODE mknode(int ac,...)
 {  {
         va_list ap;          va_list ap;
Line 391  P *p;
Line 415  P *p;
         P t;          P t;
         char *str;          char *str;
   
         for ( vl = CO, str = NAME(f); ; )          for ( vl = CO, str = f->fullname; ; )
                 if ( NAME(VR(vl)) && !strcmp(NAME(VR(vl)),str) ) {                  if ( NAME(VR(vl)) && !strcmp(NAME(VR(vl)),str) ) {
                         VR(vl)->attr = (pointer)V_SR; VR(vl)->priv = (pointer)f;                          VR(vl)->attr = (pointer)V_SR; VR(vl)->priv = (pointer)f;
                         MKV(VR(vl),t); *p = t;                          MKV(VR(vl),t); *p = t;
Line 470  int esize;
Line 494  int esize;
                 *arrayp = new;                  *arrayp = new;
         }          }
 }  }
   
 #if defined(THINK_C)  
 void bzero(p,len)  
 register char *p;  
 register int len;  
 {  
         for ( ; len; len-- )  
                 *p++ = 0;  
 }  
   
 void bcopy(s,d,len)  
 register char *s;  
 register char *d;  
 int len;  
 {  
         for ( ; len; len-- )  
                 *d++ = *s++;  
 }  
   
 char *index(char *s,char c)  
 {  
         for ( ; *s && *s != c; s++ );  
         if ( *s )  
                 return s;  
         else  
                 return 0;  
 }  
   
 void printap(p)  
 P p;  
 {  
         DCP dc;  
   
         for ( dc = DC(p); dc; dc = NEXT(dc) ) {  
                 printf("(c=0x%lx c->nm=0x%lx c->nm->p=%ld) ",  
                         (int *)dc->c,(int *)((Q)dc->c)->nm,(int)((Q)dc->c)->nm->p);  
         }  
         printf("\n");  
 }  
 #endif  

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.11

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