/************************************************************************** Returns base type matching rule name or NULL if there is no base type with such name. **************************************************************************/ struct base_type *base_type_by_rule_name(const char *name) { const char *qs = Qn_(name); base_type_iterate(pbase) { if (!fc_strcasecmp(base_rule_name(pbase), qs)) { return pbase; } } base_type_iterate_end; return NULL; }
/**************************************************************************** Return the specialist type with the given (untranslated!) rule name. Returns NULL if none match. ****************************************************************************/ struct specialist *specialist_by_rule_name(const char *name) { const char *qname = Qn_(name); specialist_type_iterate(i) { struct specialist *sp = specialist_by_number(i); if (0 == fc_strcasecmp(specialist_rule_name(sp), qname)) { return sp; } } specialist_type_iterate_end; return NULL; }
/************************************************************************** Return the (untranslated) rule name of the base type. You don't have to free the return pointer. **************************************************************************/ const char *base_rule_name(const struct base_type *pbase) { return Qn_(pbase->name.vernacular); }