Changeset 051bc69a in mainline for uspace/app/sbi/src/tdata.c


Ignore:
Timestamp:
2010-05-08T08:10:44Z (15 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
640ffe6, c5cb943d
Parents:
25a76ab8
Message:

Update SBI to rev. 244.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/sbi/src/tdata.c

    r25a76ab8 r051bc69a  
    4848static void tdata_item_subst_tdeleg(tdata_deleg_t *torig,
    4949    tdata_tvv_t *tvv, tdata_item_t **res);
     50static void tdata_item_subst_tebase(tdata_ebase_t *tebase,
     51    tdata_tvv_t *tvv, tdata_item_t **res);
     52static void tdata_item_subst_tenum(tdata_enum_t *tenum,
     53    tdata_tvv_t *tvv, tdata_item_t **res);
    5054static void tdata_item_subst_tfun(tdata_fun_t *torig,
    5155    tdata_tvv_t *tvv, tdata_item_t **res);
     
    6064static void tdata_tarray_print(tdata_array_t *tarray);
    6165static void tdata_tdeleg_print(tdata_deleg_t *tdeleg);
     66static void tdata_tebase_print(tdata_ebase_t *tebase);
     67static void tdata_tenum_print(tdata_enum_t *tenum);
    6268static void tdata_tfun_print(tdata_fun_t *tfun);
    6369static void tdata_tvref_print(tdata_vref_t *tvref);
     
    157163                return tdata_item_equal(a->u.tarray->base_ti,
    158164                    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);
    159168        case tic_tvref:
    160169                /* Check if both refer to the same type argument. */
     
    196205                tdata_item_subst_tdeleg(ti->u.tdeleg, tvv, res);
    197206                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;
    198213        case tic_tfun:
    199214                tdata_item_subst_tfun(ti->u.tfun, tvv, res);
     
    313328}
    314329
     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 */
     336static 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 */
     355static 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
    315368/** Substitute type variables in a functional type item.
    316369 *
     
    417470        case tic_tdeleg:
    418471                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);
    419478                break;
    420479        case tic_tfun:
     
    497556}
    498557
     558/** Print enum-base type item.
     559 *
     560 * @param tebase                Enum-base type item
     561 */
     562static 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 */
     577static 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
    499585/** Print function type item.
    500586 *
     
    624710}
    625711
     712/** Allocate new enum-base type item.
     713 *
     714 * @return      New enum type item
     715 */
     716tdata_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 */
     733tdata_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
    626746/** Allocate new functional type item.
    627747 *
     
    707827}
    708828
    709 /** Set tyoe variable value.
     829/** Set type variable value.
    710830 *
    711831 * Sets the value of variable with name SID @a name in type variable
Note: See TracChangeset for help on using the changeset viewer.