14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------* 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * lts_seq_internal.h * 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Copyright 2007, 2008 Nuance Communciations, Inc. * 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the 'License'); * 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * you may not use this file except in compliance with the License. * 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * You may obtain a copy of the License at * 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 * 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software * 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * distributed under the License is distributed on an 'AS IS' BASIS, * 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * See the License for the specific language governing permissions and * 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * limitations under the License. * 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/ 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef _LTS_SEQ_INTERNAL_H__ 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define _LTS_SEQ_INTERNAL_H__ 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define NO_NODE 10000 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MAX_WORD_LEN 50 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define LTS_MAXCHAR 255 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MAX_CONS_COMB 100 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MAX_NUM_CONTEXT 5 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define NUM_STRESS_LVL 3 /* SS1, SS2, SS0 */ 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Question types: 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * this enum cannot be changed for a given DATA file 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef enum { 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project UnKnown = 0, 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Left1, 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Left2, 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Left3, 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Left4, 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Left5, /*5*/ 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Right1, 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Right2, 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Right3, 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Right4, 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Right5, /*10*/ 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LeftPhone1, 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LetInWord, 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project SylInWord, 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project WordLen, 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Syl2InWord, /*15*/ 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project SylInRoot, 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Syl2InRoot, 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LeftString, 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project RightString, 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Left_DFRE, /*20*/ /*DFRE = distance from root edge*/ 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Right_DFRE, /*DFRE = distance from root edge*/ 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project NumQuestionTypes 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} QuestionType; 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct LQUESTION { 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project unsigned char num_list; 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project unsigned char type; 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project unsigned char *list; /*list of items to match against for question*/ 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project unsigned short membership[16]; // UCHAR_MAX/sizeof(unsigned short)/8 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} LQUESTION; 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef SKIP_LDP_PROPERTIES 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct LDP { 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project unsigned char letter; 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project unsigned char left_context[MAX_NUM_CONTEXT]; 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project unsigned char right_context[MAX_NUM_CONTEXT]; 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char left_phone1; 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char let_in_word; 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char syl_in_word; 794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char syl2_in_word; 804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char syl_in_root; 814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char syl2_in_root; 824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char word_len; 834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int left_string_index; 844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int right_string_index; 854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int left_DFRE; /*DFRE = distance from root edge*/ 864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int right_DFRE; 874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} LDP; 884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else 894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct LDP { 904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project unsigned char letter; 914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int properties[ NumQuestionTypes]; 924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} LDP; 934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*RT tree is the compact representations of the trees 974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Got rid of the NODE structures in order to save the overhead. 984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Instead, the two arrays below are indexed by node_index 1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/ 1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct RT_LTREE { 1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project short *values_or_question1; /*if leaf node, this is the value at the node. If not, this 1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project is the index into the questions*/ 1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project short *question2; /*also used to hold backoff_output for leaf nodes*/ 1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project short *left_nodes; /*right_node_index is always left_nodex+1, so just store left. 1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project If = MAX_NODES, then this is a leaf node*/ 1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int num_nodes; 1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} RT_LTREE; 1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct LM { /*letter mappings*/ 1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char *letters; 1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char *type; 1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int num_letters; 1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int letter_index_for_letter[UCHAR_MAX+1]; 1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} LM; 1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct PM { /*phone mappings*/ 1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char **phones; 1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int num_phones; 1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void* phoneH; /* hash table if any */ 1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} PM; 1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct LTS { 1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char **outputs; 1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char **input_for_output; 1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int num_outputs; 1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char **strings; 1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int num_strings; 1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char *string_lens; 1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project unsigned short membership[16]; // UCHAR_MAX/sizeof(unsigned short)/8 1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project RT_LTREE **trees; 1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LQUESTION **questions; 1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LM *letter_mapping; 1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PM *phone_mapping; 1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LDP dp; 1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char *allowable_cons_comb[MAX_CONS_COMB]; 1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int num_cons_comb; 1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void* allowable_cons_combH; /* hash table */ 1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int num_letters; 1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int num_questions; 1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} LTS; 1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* check for combinations of LTS phones to substitute for ETI phones */ 1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* LTS_ETI_PHONES are defined in a language specific header file slts_phone_def.h */ 1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid replace_eti_phones(char *dest, char *src); 1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid *lts_alloc(int num, int size); 1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* _LTS_SEQ_INTERNAL_H__ */ 158