1 /* 2 * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 /** 17 * @file picoktab.h 18 * 19 * symbol tables needed at runtime 20 * 21 * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 22 * All rights reserved. 23 * 24 * History: 25 * - 2009-04-20 -- initial version 26 * 27 */ 28 /** 29 * @addtogroup picoktab 30 31 * <b> Symbol tables needed at runtime </b>\n 32 * 33 */ 34 35 #ifndef PICOKTAB_H_ 36 #define PICOKTAB_H_ 37 38 #include "picoos.h" 39 #include "picoknow.h" 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif 44 #if 0 45 } 46 #endif 47 48 49 /* ************************************************************/ 50 /* fixed IDs type and functions */ 51 /* ************************************************************/ 52 53 /** object : FixedIds 54 * shortcut : ids 55 */ 56 typedef struct picoktab_fixed_ids * picoktab_FixedIds; 57 58 typedef struct picoktab_fixed_ids { 59 picoos_uint8 phonStartId; 60 picoos_uint8 phonTermId; 61 } picoktab_fixed_ids_t; 62 63 /* to be used by picorsrc only */ 64 pico_status_t picoktab_specializeIdsKnowledgeBase(picoknow_KnowledgeBase this, 65 picoos_Common common); 66 67 picoktab_FixedIds picoktab_getFixedIds(picoknow_KnowledgeBase this); 68 69 70 /* ************************************************************/ 71 /* Graphs type and functions */ 72 /* ************************************************************/ 73 74 typedef struct picoktab_graphs *picoktab_Graphs; 75 76 /* to be used by picorsrc only */ 77 pico_status_t picoktab_specializeGraphsKnowledgeBase(picoknow_KnowledgeBase this, 78 picoos_Common common); 79 80 /* return kb graphs for usage in PU */ 81 picoktab_Graphs picoktab_getGraphs(picoknow_KnowledgeBase this); 82 83 /* graph access routine: if the desired graph 'utf8graph' exists in 84 the graph table a graph offset > 0 is returned, which then can be 85 used to access the properties */ 86 picoos_uint32 picoktab_graphOffset(const picoktab_Graphs this, 87 picoos_uchar * utf8graph); 88 89 90 /* check if UTF8 char 'graph' has property vowellike, return non-zero 91 if 'ch' has the property, 0 otherwise */ 92 picoos_uint8 picoktab_hasVowellikeProp(const picoktab_Graphs this, 93 const picoos_uint8 *graph, 94 const picoos_uint8 graphlenmax); 95 96 /* graph properties access routines: if graph with offset 'graphsOffset' has the 97 desired property, returns TRUE if 'ch' has the property, FALSE otherwise */ 98 picoos_bool picoktab_getIntPropTokenType(const picoktab_Graphs this, 99 picoos_uint32 graphsOffset, 100 picoos_uint8 *stokenType); 101 picoos_bool picoktab_getIntPropTokenSubType(const picoktab_Graphs this, 102 picoos_uint32 graphsOffset, 103 picoos_int8 *stokenSubType); 104 picoos_bool picoktab_getIntPropValue(const picoktab_Graphs this, 105 picoos_uint32 graphsOffset, 106 picoos_uint32 *value); 107 picoos_bool picoktab_getStrPropLowercase(const picoktab_Graphs this, 108 picoos_uint32 graphsOffset, 109 picoos_uchar *lowercase); 110 picoos_bool picoktab_getStrPropGraphsubs1(const picoktab_Graphs this, 111 picoos_uint32 graphsOffset, 112 picoos_uchar *graphsubs1); 113 picoos_bool picoktab_getStrPropGraphsubs2(const picoktab_Graphs this, 114 picoos_uint32 graphsOffset, 115 picoos_uchar *graphsubs2); 116 picoos_bool picoktab_getIntPropPunct(const picoktab_Graphs this, 117 picoos_uint32 graphsOffset, 118 picoos_uint8 *info1, 119 picoos_uint8 *info2); 120 121 picoos_uint16 picoktab_graphsGetNumEntries(const picoktab_Graphs this); 122 void picoktab_graphsGetGraphInfo(const picoktab_Graphs this, 123 picoos_uint16 graphIndex, picoos_uchar * from, picoos_uchar * to, 124 picoos_uint8 * propset, 125 picoos_uint8 * stokenType, picoos_uint8 * stokenSubType, 126 picoos_uint8 * value, picoos_uchar * lowercase, 127 picoos_uchar * graphsubs1, picoos_uchar * graphsubs2, 128 picoos_uint8 * punct); 129 130 131 /* ************************************************************/ 132 /* Phones type and functions */ 133 /* ************************************************************/ 134 135 /* to be used by picorsrc only */ 136 pico_status_t picoktab_specializePhonesKnowledgeBase(picoknow_KnowledgeBase this, 137 picoos_Common common); 138 139 typedef struct picoktab_phones *picoktab_Phones; 140 141 /* return kb Phones for usage in PU */ 142 picoktab_Phones picoktab_getPhones(picoknow_KnowledgeBase this); 143 144 /* check if 'ch' has a property, return non-zero if 'ch' has the 145 property, 0 otherwise */ 146 picoos_uint8 picoktab_hasVowelProp(const picoktab_Phones this, 147 const picoos_uint8 ch); 148 picoos_uint8 picoktab_hasDiphthProp(const picoktab_Phones this, 149 const picoos_uint8 ch); 150 picoos_uint8 picoktab_hasGlottProp(const picoktab_Phones this, 151 const picoos_uint8 ch); 152 picoos_uint8 picoktab_hasNonsyllvowelProp(const picoktab_Phones this, 153 const picoos_uint8 ch); 154 picoos_uint8 picoktab_hasSyllconsProp(const picoktab_Phones this, 155 const picoos_uint8 ch); 156 157 /* to speed up processing for often used combinations of properties 158 the following functions are provided, which check if the property 159 combination is true for 'ch' */ 160 picoos_bool picoktab_isSyllCarrier(const picoktab_Phones this, 161 const picoos_uint8 ch); 162 163 /* some properties can be assigned to a single sym only, check if 'ch' 164 is a special sym, return TRUE if it is the special sym, FALSE 165 otherwise */ 166 picoos_bool picoktab_isPrimstress(const picoktab_Phones this, 167 const picoos_uint8 ch); 168 picoos_bool picoktab_isSecstress(const picoktab_Phones this, 169 const picoos_uint8 ch); 170 picoos_bool picoktab_isSyllbound(const picoktab_Phones this, 171 const picoos_uint8 ch); 172 picoos_bool picoktab_isWordbound(const picoktab_Phones this, 173 const picoos_uint8 ch); 174 picoos_bool picoktab_isPause(const picoktab_Phones this, 175 const picoos_uint8 ch); 176 177 /* get specific sym values */ 178 picoos_uint8 picoktab_getPrimstressID(const picoktab_Phones this); 179 picoos_uint8 picoktab_getSecstressID(const picoktab_Phones this); 180 picoos_uint8 picoktab_getSyllboundID(const picoktab_Phones this); 181 picoos_uint8 picoktab_getWordboundID(const picoktab_Phones this); 182 picoos_uint8 picoktab_getPauseID(const picoktab_Phones this); 183 184 /* ************************************************************/ 185 /* Pos type and functions */ 186 /* ************************************************************/ 187 188 /* to be used by picorsrc only */ 189 pico_status_t picoktab_specializePosKnowledgeBase(picoknow_KnowledgeBase this, 190 picoos_Common common); 191 192 typedef struct picoktab_pos *picoktab_Pos; 193 194 #define PICOKTAB_MAXNRPOS_IN_COMB 8 195 196 /* return kb Pos for usage in PU */ 197 picoktab_Pos picoktab_getPos(picoknow_KnowledgeBase this); 198 199 /* returns TRUE if 'pos' is the ID of a unique (ie. non-combined) POS, 200 returns FALSE otherwise */ 201 picoos_bool picoktab_isUniquePos(const picoktab_Pos this, 202 const picoos_uint8 pos); 203 204 /* returns TRUE if the non-combined 'pos' is one of the POSes in the 205 combined POS group 'posgroup, returns FALSE otherwise. Note: if 206 'posgroup' is itself non-combined, this function returns TRUE if it 207 matches with 'pos', and FALSE otherwise */ 208 picoos_bool picoktab_isPartOfPosGroup(const picoktab_Pos this, 209 const picoos_uint8 pos, 210 const picoos_uint8 posgroup); 211 212 /* return the combined POS group ID that is a representative ID for 213 all the 'poslistlen' POSes (which can be combined themselves) in 214 poslist. Returns '0' in case of error. */ 215 picoos_uint8 picoktab_getPosGroup(const picoktab_Pos this, 216 const picoos_uint8 *poslist, 217 const picoos_uint8 poslistlen); 218 219 #ifdef __cplusplus 220 } 221 #endif 222 223 224 #endif /*PICOKTAB_H_*/ 225