--- capa/capa51/pProj/capaUnit.c 2000/08/07 20:47:29 1.7 +++ capa/capa51/pProj/capaUnit.c 2004/03/26 20:02:03 1.12 @@ -31,6 +31,7 @@ #include /* isalnum() */ #include #include +#include #include "capaParser.h" @@ -780,17 +781,17 @@ int check_correct_unit(char *u_symb,Uni (Pstack[Ptopidx]->u_count == t->u_count) ) { /* has unit */ *scale = units_ratio(Pstack[Ptopidx], t); if( *scale == 0.0 ) { - result = UNIT_FAIL; + result = UNIT_IRRECONCIBLE; } free_utree(ap); } else { - result = UNIT_FAIL; + result = UNIT_INVALID_STUDENT3; } } else { /* invalid unit representation */ - result = UNIT_FAIL; + result = UNIT_INVALID_STUDENT2; } } else { - result = UNIT_FAIL; + result = UNIT_INVALID_STUDENT1; } #ifdef UNIT_DBUG fclose(ufp); @@ -911,8 +912,9 @@ u_copy_unit(Unit_t *a_p, Unit_t *b_p, do a_p->u_count++; } else if( b_p->u_type == U_DERIVED) { /* 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++;*/ + 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 ) { scale = pow(b_p->u_scale, exp_scale); a_p->u_scale = a_p->u_scale * scale; @@ -1406,10 +1408,10 @@ u_insert_derived(n_p,s_p,c_p,u_p)char * strcpy(new_p->u_comment,c_p); simplify_unit(new_p); - /* +#ifdef UNIT_DBUG printf("Derived Unit:%s\n",new_p->u_name); print_unit_t(new_p); - */ +#endif if (c_result < 0 ) { new_p->u_left = t->u_left; new_p->u_right = t; t->u_left = NULL; @@ -1742,18 +1744,18 @@ p_new_unit(Unit_t *left_p, Unit_t *right err_code = 3; cu_p->u_type = U_UNKNOWN; } - } else { + } else { /* symb_str is not in form */ /* printf("<<%s>>", symb_str); */ err_code = 2; cu_p->u_type = U_UNKNOWN; } } else {/* len == 1 */ - /* printf(" not found\n"); */ + /* printf(" not found in symbol tree \n"); */ err_code = 1; cu_p->u_type = U_UNKNOWN; } } - } else { + } else { /* why would we have a length less than zero symb_str ? */ err_code = 4; }