Diff for /capa/capa51/pProj/capaUnit.c between versions 1.7 and 1.13

version 1.7, 2000/08/07 20:47:29 version 1.13, 2005/02/15 22:15:05
Line 31 Line 31
 #include <ctype.h>        /* isalnum()   */  #include <ctype.h>        /* isalnum()   */
 #include <string.h>  #include <string.h>
 #include <math.h>  #include <math.h>
   #include <float.h>
   
 #include "capaParser.h"  #include "capaParser.h"
   
Line 726  process_op(int op) Line 727  process_op(int op)
   }    }
 }  }
   
 void  Unit_t*
 process_utree(Unit_t *t)  process_utree(Unit_t *t)
 {  {
   Ptopidx=0;    Ptopidx=0;
   postwalk_utree(t);    postwalk_utree(t);
   if( Ptopidx == 1 ) {    if( Ptopidx == 1 ) {
     /* printf("Correctly parsed!\n"); */      //fprintf(stderr,"Correctly parsed!\n");
     printf("Unit:%s\n",Sbuf);      //fprintf(stderr,"Unit:%s\n",Sbuf);
     simplify_unit(Pstack[Ptopidx]);      simplify_unit(Pstack[Ptopidx]);
     Pstack[Ptopidx]->u_symbol[0]='\0';      //Pstack[Ptopidx]->u_symbol[0]='\0';
     /*sprintf(Pstack[Ptopidx]->u_symbol,"");*/      //fprintf(stderr,Pstack[Ptopidx]->u_symbol,"");
     print_unit_t(Pstack[Ptopidx]);      print_unit_t(Pstack[Ptopidx]);
     u_find_name(Pstack[Ptopidx]);      //u_find_name(Pstack[Ptopidx]);
     print_matches(Pstack[Ptopidx]);      //print_matches(Pstack[Ptopidx]);
     free_utree(t);      return(Pstack[Ptopidx]);
       //free_utree(t);
   }    }
     return(t);
 }  }
   
 /* ============================================================== */  /* ============================================================== */
Line 780  int  check_correct_unit(char *u_symb,Uni Line 783  int  check_correct_unit(char *u_symb,Uni
   (Pstack[Ptopidx]->u_count == t->u_count) ) { /* has unit */    (Pstack[Ptopidx]->u_count == t->u_count) ) { /* has unit */
  *scale = units_ratio(Pstack[Ptopidx], t);   *scale = units_ratio(Pstack[Ptopidx], t);
  if( *scale == 0.0 ) {   if( *scale == 0.0 ) {
   result = UNIT_FAIL;    result = UNIT_IRRECONCIBLE;
  }   }
  free_utree(ap);   free_utree(ap);
       } else {        } else {
  result = UNIT_FAIL;   result = UNIT_INVALID_STUDENT3;
       }        }
     } else { /* invalid unit representation */      } else { /* invalid unit representation */
       result = UNIT_FAIL;        result = UNIT_INVALID_STUDENT2;
     }      }
   } else {    } else {
     result = UNIT_FAIL;      result = UNIT_INVALID_STUDENT1;
   }    }
 #ifdef UNIT_DBUG  #ifdef UNIT_DBUG
   fclose(ufp);    fclose(ufp);
Line 911  u_copy_unit(Unit_t *a_p, Unit_t *b_p, do Line 914  u_copy_unit(Unit_t *a_p, Unit_t *b_p, do
       a_p->u_count++;        a_p->u_count++;
     } else if( b_p->u_type == U_DERIVED) {      } else if( b_p->u_type == U_DERIVED) {
       /* derived units but without any units elements (scalar) */        /* derived units but without any units elements (scalar) */
       /* do nothing, ignore this units  WE REALLY MEAN THIS DON'T DO THE NEXT LINE!*/  
       /*a_p->u_count++;*/        /*a_p->u_count++;*/
         scale = pow(b_p->u_scale, exp_scale);
         a_p->u_scale = a_p->u_scale * scale;
     } else if( b_p->u_type == U_CONSTANT ) {      } else if( b_p->u_type == U_CONSTANT ) {
       scale = pow(b_p->u_scale, exp_scale);        scale = pow(b_p->u_scale, exp_scale);
       a_p->u_scale = a_p->u_scale * scale;        a_p->u_scale = a_p->u_scale * scale;
Line 1406  u_insert_derived(n_p,s_p,c_p,u_p)char  * Line 1410  u_insert_derived(n_p,s_p,c_p,u_p)char  *
   strcpy(new_p->u_comment,c_p);    strcpy(new_p->u_comment,c_p);
       
   simplify_unit(new_p);    simplify_unit(new_p);
   /*  #ifdef UNIT_DBUG
   printf("Derived Unit:%s\n",new_p->u_name);    printf("Derived Unit:%s\n",new_p->u_name);
   print_unit_t(new_p);     print_unit_t(new_p); 
   */  #endif
   if (c_result < 0 ) {    if (c_result < 0 ) {
     new_p->u_left = t->u_left; new_p->u_right = t;      new_p->u_left = t->u_left; new_p->u_right = t;
     t->u_left = NULL;      t->u_left = NULL;
Line 1742  p_new_unit(Unit_t *left_p, Unit_t *right Line 1746  p_new_unit(Unit_t *left_p, Unit_t *right
             err_code = 3;              err_code = 3;
     cu_p->u_type   = U_UNKNOWN;      cu_p->u_type   = U_UNKNOWN;
           }            }
         } else {          } else { /* symb_str is not in <prefix><units> form */
           /* printf("<<%s>>", symb_str); */            /* printf("<<%s>>", symb_str); */
           err_code = 2;            err_code = 2;
   cu_p->u_type   = U_UNKNOWN;    cu_p->u_type   = U_UNKNOWN;
         }          }
       } else {/* len == 1 */        } else {/* len == 1 */
         /* printf(" not found\n"); */          /* printf(" not found in symbol tree \n"); */
         err_code = 1;          err_code = 1;
  cu_p->u_type   = U_UNKNOWN;   cu_p->u_type   = U_UNKNOWN;
       }        }
     }      }
   } else {    } else { /* why would we have a length less than zero symb_str ? */
     err_code = 4;      err_code = 4;
   }    }
       

Removed from v.1.7  
changed lines
  Added in v.1.13


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