Beispiel #1
0
/* 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);
}
Beispiel #2
0
/* 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);
}