CONCORD_INDEX
concord_genre_open_index (CONCORD_Genre genre, const unsigned char* index);
+CONCORD_Feature
+concord_genre_get_feature_0 (CONCORD_Genre genre, const unsigned char* name);
+
int concord_close_index (CONCORD_INDEX table);
}
int
-concord_ds_set_object_nil (CONCORD_DS ds, CONCORD_Object object_nil)
+concord_ds_set_object_failure (CONCORD_DS ds, CONCORD_Object object_nil)
{
ds->object_nil = object_nil;
return 0;
}
CONCORD_Feature
-concord_genre_get_feature (CONCORD_Genre genre, const unsigned char* name)
+concord_genre_get_feature_0 (CONCORD_Genre genre, const unsigned char* name)
{
CONCORD_Feature feature;
return feature;
}
+CONCORD_Feature
+concord_genre_get_feature (CONCORD_Genre genre, const unsigned 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)
+ {
+ unsigned 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);
+}
+
CONCORD_INDEX
concord_genre_get_index (CONCORD_Genre genre, const unsigned char* name)
{