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

version 1.7, 2000/08/07 20:47:29 version 1.12, 2004/03/26 20:02:03
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 780  int  check_correct_unit(char *u_symb,Uni Line 781  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 912  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 1408  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 1744  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.12


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