+CONCORD_Feature
+concord_genre_get_feature (CONCORD_Genre genre, const char* name)
+{
+ CONCORD_Genre g_feature
+ = concord_ds_get_genre (genre->ds, "feature");
+
+ if (g_feature != NULL)
+ {
+ CONCORD_Feature p_true_name
+ = concord_genre_get_feature_0 (g_feature, "true-name");
+
+ if (g_feature != NULL)
+ {
+ CONCORD_String_Tank s_true_name;
+ int status
+ = concord_obj_get_feature_value_string (name,
+ p_true_name,
+ &s_true_name);
+ if (status == 0)
+ {
+ char* t_name = alloca (s_true_name.size + 1);
+
+ strncpy (t_name, s_true_name.data, s_true_name.size);
+ t_name[s_true_name.size] = '\0';
+ return concord_genre_get_feature_0 (genre, t_name);
+ }
+ }
+ }
+ return concord_genre_get_feature_0 (genre, name);
+}
+