/* HTS_ModelSet_get_parameter_index: get index of parameter tree and PDF */ void HTS_ModelSet_get_parameter_index(HTS_ModelSet * ms, char *string, int *tree_index, int *pdf_index, int stream_index, int state_index, int interpolation_index) { HTS_Tree *tree; HTS_Pattern *pattern; HTS_Boolean find; find = FALSE; (*tree_index) = 2; (*pdf_index) = 1; for (tree = ms->stream[stream_index].model[interpolation_index].tree; tree; tree = tree->next) { if (tree->state == state_index) { pattern = tree->head; if (!pattern) find = TRUE; for (; pattern; pattern = pattern->next) if (HTS_pattern_match(string, pattern->string)) { find = TRUE; break; } if (find) break; } (*tree_index)++; } if (tree == NULL) HTS_error(1, "HTS_ModelSet_get_parameter_index: Cannot find model %s.\n", string); (*pdf_index) = HTS_Tree_search_node(tree, string); }
/* HTS_ModelSet_get_gv_switch_index: get index of GV switch tree and PDF */ void HTS_ModelSet_get_gv_switch_index(HTS_ModelSet * ms, char *string, int *tree_index, int *pdf_index) { HTS_Tree *tree; HTS_Pattern *pattern; HTS_Boolean find; find = FALSE; (*tree_index) = 2; (*pdf_index) = 1; for (tree = ms->gv_switch.tree; tree; tree = tree->next) { pattern = tree->head; if (!pattern) find = TRUE; for (; pattern; pattern = pattern->next) if (HTS_pattern_match(string, pattern->string)) { find = TRUE; break; } if (find) break; (*tree_index)++; } if (tree == NULL) { HTS_error(1, "HTS_ModelSet_get_gv_switch_index: Cannot find model %s.\n", string); return; } (*pdf_index) = HTS_Tree_search_node(tree, string); }