-static inline int validate_num_exp(PSI_Data *data, decl_args *dargs, decl_arg *func, num_exp *exp) {
+static inline decl_enum_item *locate_num_exp_enum_item_ex(num_exp *exp, decl_enum *e) {
+ size_t k;
+
+ if (e) for (k = 0; k < e->items->count; ++k) {
+ decl_enum_item *i = e->items->list[k];
+
+ if (!strcmp(i->name, exp->u.dvar->name)) {
+ free_decl_var(exp->u.dvar);
+ exp->t = PSI_T_ENUM;
+ exp->u.enm = i;
+ return i;
+ }
+ }
+ return NULL;
+}
+static inline decl_enum_item *locate_num_exp_enum_item(num_exp *exp, decl_enums *enums) {
+ size_t j;
+
+ if (enums) for (j = 0; j < enums->count; ++j) {
+ decl_enum *e = enums->list[j];
+ decl_enum_item *i = locate_num_exp_enum_item_ex(exp, e);
+
+ if (i) {
+ return i;
+ }
+ }
+ return NULL;
+}
+static inline int validate_num_exp(PSI_Data *data, num_exp *exp, decl_args *dargs, decl_arg *func, decl_enum *enm) {