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


Ignore:
Timestamp:
2010-05-08T08:10:44Z (14 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/stree.c

    r25a76ab8 r051bc69a  
    116116}
    117117
     118/** Allocate new constructor.
     119 *
     120 * @return      New constructor
     121 */
     122stree_ctor_t *stree_ctor_new(void)
     123{
     124        stree_ctor_t *ctor;
     125
     126        ctor = calloc(1, sizeof(stree_ctor_t));
     127        if (ctor == NULL) {
     128                printf("Memory allocation failed.\n");
     129                exit(1);
     130        }
     131
     132        return ctor;
     133}
     134
    118135/** Allocate new member delegate.
    119136 *
     
    133150}
    134151
     152/** Allocate new enum.
     153 *
     154 * @return      New enum
     155 */
     156stree_enum_t *stree_enum_new(void)
     157{
     158        stree_enum_t *enum_d;
     159
     160        enum_d = calloc(1, sizeof(stree_enum_t));
     161        if (enum_d == NULL) {
     162                printf("Memory allocation failed.\n");
     163                exit(1);
     164        }
     165
     166        return enum_d;
     167}
     168
     169/** Allocate new enum member.
     170 *
     171 * @return      New enum member
     172 */
     173stree_embr_t *stree_embr_new(void)
     174{
     175        stree_embr_t *embr;
     176
     177        embr = calloc(1, sizeof(stree_embr_t));
     178        if (embr == NULL) {
     179                printf("Memory allocation failed.\n");
     180                exit(1);
     181        }
     182
     183        return embr;
     184}
     185
    135186/** Allocate new member function.
    136187 *
     
    394445}
    395446
     447/** Allocate new @c break statement.
     448 *
     449 * @return      New @c break statement
     450 */
     451stree_break_t *stree_break_new(void)
     452{
     453        stree_break_t *break_s;
     454
     455        break_s = calloc(1, sizeof(stree_break_t));
     456        if (break_s == NULL) {
     457                printf("Memory allocation failed.\n");
     458                exit(1);
     459        }
     460
     461        return break_s;
     462}
     463
    396464/** Allocate new @c return statement.
    397465 *
     
    462530}
    463531
     532/** Allocate new @c if/elif clause.
     533 *
     534 * @return      New @c if/elif clause
     535 */
     536stree_if_clause_t *stree_if_clause_new(void)
     537{
     538        stree_if_clause_t *if_clause;
     539
     540        if_clause = calloc(1, sizeof(stree_if_clause_t));
     541        if (if_clause == NULL) {
     542                printf("Memory allocation failed.\n");
     543                exit(1);
     544        }
     545
     546        return if_clause;
     547}
     548
    464549/** Allocate new statement block.
    465550 *
     
    869954 * @param symbol        Symbol
    870955 * @param sac           Symbol attribute class
    871  * @return              @c b_true if yes, @c b_false if no.
     956 * @return              @c b_true if yes, @c b_false if no
    872957 */
    873958bool_t stree_symbol_has_attr(stree_symbol_t *symbol, symbol_attr_class_t sac)
     
    9381023/** Search for CSI type argument of the given name.
    9391024 *
    940  * @param csi           CSI to look in.
    941  * @param ident         Identifier of the type argument.
    942  * @return              Type argument definition or @c NULL if not found.
     1025 * @param csi           CSI to look in
     1026 * @param ident         Identifier of the type argument
     1027 * @return              Type argument declaration or @c NULL if not found
    9431028 */
    9441029stree_targ_t *stree_csi_find_targ(stree_csi_t *csi, stree_ident_t *ident)
     
    9591044        return NULL;
    9601045}
     1046
     1047/** Search for enum member of the given name.
     1048 *
     1049 * @param enum_d        Enum to look in
     1050 * @param ident         Identifier of the enum member
     1051 * @return              Enum member declaration or @c NULL if not found
     1052 */
     1053stree_embr_t *stree_enum_find_mbr(stree_enum_t *enum_d, stree_ident_t *ident)
     1054{
     1055        list_node_t *embr_n;
     1056        stree_embr_t *embr;
     1057
     1058        embr_n = list_first(&enum_d->members);
     1059        while (embr_n != NULL) {
     1060                embr = list_node_data(embr_n, stree_embr_t *);
     1061                if (embr->name->sid == ident->sid)
     1062                        return embr;
     1063
     1064                embr_n = list_next(&enum_d->members, embr_n);
     1065        }
     1066
     1067        /* No match */
     1068        return NULL;
     1069}
     1070
     1071/** Get CSI member name.
     1072 *
     1073 * @param csimbr        CSI member
     1074 * @return              Member name
     1075 */
     1076stree_ident_t *stree_csimbr_get_name(stree_csimbr_t *csimbr)
     1077{
     1078        stree_ident_t *mbr_name;
     1079
     1080        /* Keep compiler happy. */
     1081        mbr_name = NULL;
     1082
     1083        switch (csimbr->cc) {
     1084        case csimbr_csi: mbr_name = csimbr->u.csi->name; break;
     1085        case csimbr_ctor: mbr_name = csimbr->u.ctor->name; break;
     1086        case csimbr_deleg: mbr_name = csimbr->u.deleg->name; break;
     1087        case csimbr_enum: mbr_name = csimbr->u.enum_d->name; break;
     1088        case csimbr_fun: mbr_name = csimbr->u.fun->name; break;
     1089        case csimbr_var: mbr_name = csimbr->u.var->name; break;
     1090        case csimbr_prop: mbr_name = csimbr->u.prop->name; break;
     1091        }
     1092
     1093        return mbr_name;
     1094}
Note: See TracChangeset for help on using the changeset viewer.