Changeset 051bc69a in mainline for uspace/app/sbi/src/tdata.c
- Timestamp:
- 2010-05-08T08:10:44Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 640ffe6, c5cb943d
- Parents:
- 25a76ab8
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/sbi/src/tdata.c
r25a76ab8 r051bc69a 48 48 static void tdata_item_subst_tdeleg(tdata_deleg_t *torig, 49 49 tdata_tvv_t *tvv, tdata_item_t **res); 50 static void tdata_item_subst_tebase(tdata_ebase_t *tebase, 51 tdata_tvv_t *tvv, tdata_item_t **res); 52 static void tdata_item_subst_tenum(tdata_enum_t *tenum, 53 tdata_tvv_t *tvv, tdata_item_t **res); 50 54 static void tdata_item_subst_tfun(tdata_fun_t *torig, 51 55 tdata_tvv_t *tvv, tdata_item_t **res); … … 60 64 static void tdata_tarray_print(tdata_array_t *tarray); 61 65 static void tdata_tdeleg_print(tdata_deleg_t *tdeleg); 66 static void tdata_tebase_print(tdata_ebase_t *tebase); 67 static void tdata_tenum_print(tdata_enum_t *tenum); 62 68 static void tdata_tfun_print(tdata_fun_t *tfun); 63 69 static void tdata_tvref_print(tdata_vref_t *tvref); … … 157 163 return tdata_item_equal(a->u.tarray->base_ti, 158 164 b->u.tarray->base_ti); 165 case tic_tenum: 166 /* Check if both use the same enum definition. */ 167 return (a->u.tenum->enum_d == b->u.tenum->enum_d); 159 168 case tic_tvref: 160 169 /* Check if both refer to the same type argument. */ … … 196 205 tdata_item_subst_tdeleg(ti->u.tdeleg, tvv, res); 197 206 break; 207 case tic_tebase: 208 tdata_item_subst_tebase(ti->u.tebase, tvv, res); 209 break; 210 case tic_tenum: 211 tdata_item_subst_tenum(ti->u.tenum, tvv, res); 212 break; 198 213 case tic_tfun: 199 214 tdata_item_subst_tfun(ti->u.tfun, tvv, res); … … 313 328 } 314 329 330 /** Substitute type variables in a enum-base type item. 331 * 332 * @param torig Type item to substitute into. 333 * @param tvv Type variable valuation (values of type variables). 334 * @param res Place to store pointer to new type item. 335 */ 336 static void tdata_item_subst_tebase(tdata_ebase_t *tebase, 337 tdata_tvv_t *tvv, tdata_item_t **res) 338 { 339 tdata_ebase_t *tnew; 340 341 (void) tvv; 342 343 /* Plain copy */ 344 tnew = tdata_ebase_new(); 345 *res = tdata_item_new(tic_tebase); 346 (*res)->u.tebase = tebase; 347 } 348 349 /** Substitute type variables in a enum type item. 350 * 351 * @param torig Type item to substitute into. 352 * @param tvv Type variable valuation (values of type variables). 353 * @param res Place to store pointer to new type item. 354 */ 355 static void tdata_item_subst_tenum(tdata_enum_t *tenum, 356 tdata_tvv_t *tvv, tdata_item_t **res) 357 { 358 tdata_enum_t *tnew; 359 360 (void) tvv; 361 362 /* Plain copy */ 363 tnew = tdata_enum_new(); 364 *res = tdata_item_new(tic_tenum); 365 (*res)->u.tenum = tenum; 366 } 367 315 368 /** Substitute type variables in a functional type item. 316 369 * … … 417 470 case tic_tdeleg: 418 471 tdata_tdeleg_print(titem->u.tdeleg); 472 break; 473 case tic_tebase: 474 tdata_tebase_print(titem->u.tebase); 475 break; 476 case tic_tenum: 477 tdata_tenum_print(titem->u.tenum); 419 478 break; 420 479 case tic_tfun: … … 497 556 } 498 557 558 /** Print enum-base type item. 559 * 560 * @param tebase Enum-base type item 561 */ 562 static void tdata_tebase_print(tdata_ebase_t *tebase) 563 { 564 stree_symbol_t *enum_sym; 565 566 enum_sym = enum_to_symbol(tebase->enum_d); 567 568 printf("typeref("); 569 symbol_print_fqn(enum_sym); 570 printf(")"); 571 } 572 573 /** Print enum type item. 574 * 575 * @param tenum Enum type item 576 */ 577 static void tdata_tenum_print(tdata_enum_t *tenum) 578 { 579 stree_symbol_t *enum_sym; 580 581 enum_sym = enum_to_symbol(tenum->enum_d); 582 symbol_print_fqn(enum_sym); 583 } 584 499 585 /** Print function type item. 500 586 * … … 624 710 } 625 711 712 /** Allocate new enum-base type item. 713 * 714 * @return New enum type item 715 */ 716 tdata_ebase_t *tdata_ebase_new(void) 717 { 718 tdata_ebase_t *tebase; 719 720 tebase = calloc(1, sizeof(tdata_ebase_t)); 721 if (tebase == NULL) { 722 printf("Memory allocation failed.\n"); 723 exit(1); 724 } 725 726 return tebase; 727 } 728 729 /** Allocate new enum type item. 730 * 731 * @return New enum type item 732 */ 733 tdata_enum_t *tdata_enum_new(void) 734 { 735 tdata_enum_t *tenum; 736 737 tenum = calloc(1, sizeof(tdata_enum_t)); 738 if (tenum == NULL) { 739 printf("Memory allocation failed.\n"); 740 exit(1); 741 } 742 743 return tenum; 744 } 745 626 746 /** Allocate new functional type item. 627 747 * … … 707 827 } 708 828 709 /** Set ty oe variable value.829 /** Set type variable value. 710 830 * 711 831 * Sets the value of variable with name SID @a name in type variable
Note:
See TracChangeset
for help on using the changeset viewer.