errr remove_flag(bitflag *flags, const size_t size, const char **flag_table, const char *flag_name) { int flag = lookup_flag(flag_table, flag_name); if (flag == FLAG_END) return PARSE_ERROR_INVALID_FLAG; flag_off(flags, size, flag); return 0; }
static enum parser_error parse_summon_race_flag(struct parser *p) { struct summon *s = parser_priv(p); int flag; assert(s); flag = lookup_flag(mon_race_flags, parser_getsym(p, "flag")); if (flag == FLAG_END) { return PARSE_ERROR_INVALID_FLAG; } else { s->race_flag = flag; } return PARSE_ERROR_NONE; }
static enum parser_error parse_buy_flag(struct parser *p) { struct store *s = parser_priv(p); struct object_buy *buy; char *t; int flag; if (!s) return PARSE_ERROR_MISSING_RECORD_HEADER; buy = mem_zalloc(sizeof(*buy)); t = string_make(parser_getsym(p, "flag")); flag = lookup_flag(obj_flags, t); if (flag == FLAG_END) return PARSE_ERROR_INVALID_FLAG; buy->flag = flag; buy->tval = tval_find_idx(parser_getstr(p, "base")); buy->next = s->buy; s->buy = buy; return PARSE_ERROR_NONE; }