--- capa/capa51/pProj/capaUnit.c 2000/03/22 21:08:03 1.4 +++ capa/capa51/pProj/capaUnit.c 2000/09/20 17:20:33 1.10 @@ -1,13 +1,37 @@ +/* functions to handle the unit parser/comparison engine + Copyright (C) 1992-2000 Michigan State University + + The CAPA system is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The CAPA system is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public + License along with the CAPA system; see the file COPYING. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + As a special exception, you have permission to link this program + with the TtH/TtM library and distribute executables, as long as you + follow the requirements of the GNU GPL in regard to all of the + software in the executable aside from TtH/TtM. +*/ /* =||>|===================== capaUnit.c =====================|<||= */ /* created by Isaac Tsai 1997 */ -/* copyrighted by Isaac Tsai 1997, 1998, 1999 */ +/* by Isaac Tsai 1997, 1998, 1999 */ /* =||>|========================================================|<||= */ #include /* fopen() */ #include #include /* isalnum() */ #include #include +#include #include "capaParser.h" @@ -890,6 +914,8 @@ u_copy_unit(Unit_t *a_p, Unit_t *b_p, do /* 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; @@ -1383,10 +1409,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; @@ -1719,18 +1745,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; }