Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/sbi/src/tdata_t.h

    r074444f r38aaacc2  
    3131#ifndef TDATA_T_H_
    3232#define TDATA_T_H_
     33
     34#include "intmap_t.h"
    3335
    3436/** Class of primitive type. */
     
    7880} tdata_array_t;
    7981
     82/** Function signature type.
     83 *
     84 * This is a part of functional type or delegate type.
     85 */
     86typedef struct {
     87        /** Types of fixed arguments. */
     88        list_t arg_ti; /* of tdata_item_t */
     89
     90        /** Type of variadic argument */
     91        struct tdata_item *varg_ti;
     92
     93        /** Return type */
     94        struct tdata_item *rtype;
     95} tdata_fun_sig_t;
     96
     97/** Delegate type. */
     98typedef struct {
     99        /** Delegate definition or @c NULL if anonymous delegate */
     100        struct stree_deleg *deleg;
     101
     102        /** Delegate signature type */
     103        tdata_fun_sig_t *tsig;
     104} tdata_deleg_t;
     105
    80106/** Functional type. */
    81107typedef struct {
    82         /**
    83          * Function definition. We'll leave expansion to the call operation.
    84          */
    85         struct stree_fun *fun;
     108        /** Delegate definition or @c NULL if anonymous delegate */
     109        struct stree_deleg *deleg;
     110
     111        /** Function signature type */
     112        tdata_fun_sig_t *tsig;
    86113} tdata_fun_t;
     114
     115/** Type variable reference. */
     116typedef struct {
     117        /** Definition of type argument this variable is referencing. */
     118        struct stree_targ *targ;
     119} tdata_vref_t;
    87120
    88121typedef enum {
     
    93126        /** Array type item */
    94127        tic_tarray,
     128        /** Delegate type item */
     129        tic_tdeleg,
    95130        /** Function type item */
    96131        tic_tfun,
     132        /** Type variable item */
     133        tic_tvref,
    97134        /** Special error-recovery type item */
    98135        tic_ignore
     
    107144                tdata_object_t *tobject;
    108145                tdata_array_t *tarray;
     146                tdata_deleg_t *tdeleg;
    109147                tdata_fun_t *tfun;
     148                tdata_vref_t *tvref;
    110149        } u;
    111150} tdata_item_t;
    112151
     152/** Type variable valuation (mapping of type argument names to values). */
     153typedef struct {
     154        /** Maps name SID to type item */
     155        intmap_t tvv; /* of tdata_item_t */
     156} tdata_tvv_t;
     157
    113158#endif
Note: See TracChangeset for help on using the changeset viewer.