1b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* 2b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 3b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 4b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * you may not use this file except in compliance with the License. 6b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * You may obtain a copy of the License at 7b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 8b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * http://www.apache.org/licenses/LICENSE-2.0 9b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 10b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Unless required by applicable law or agreed to in writing, software 11b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * distributed under the License is distributed on an "AS IS" BASIS, 12b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * See the License for the specific language governing permissions and 14b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * limitations under the License. 15b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */ 16b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/** 17b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * @file picoknow.h 18b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 19b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 20b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * All rights reserved. 21b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 22b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * History: 23b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * - 2009-04-20 -- initial version 24b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 25b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */ 26b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/** 27b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * @addtogroup picoknow 28b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 29b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * <b> Pico knowledge base </b>\n 30b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 31b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen*/ 32b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 33b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifndef PICOKNOW_H_ 34b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_H_ 35b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 36b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#include "picodefs.h" 37b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#include "picoos.h" 38b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 39b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifdef __cplusplus 40b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenextern "C" { 41b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif 42b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#if 0 43b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} 44b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif 45b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 46b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 47b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef enum picoknow_kb_id { 48b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_NULL = 0, 49b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen /* base / tpp 1 - 7 */ 50b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_TPP_MAIN = 1, 51b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_TAB_GRAPHS = 2, 52b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_TAB_PHONES = 3, 53b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_TAB_POS = 4, 54b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FIXED_IDS = 7, 55b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen /* debug */ 56b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DBG = 8, 57b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 58b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen /* textana 9 - 32 */ 59b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_LEX_MAIN = 9, 60b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_POSP = 10, 61b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_POSD = 11, 62b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_G2P = 12, 63b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_WPHO_1 = 13, 64b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_WPHO_2 = 14, 65b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_WPHO_3 = 15, 66b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_WPHO_4 = 16, 67b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_WPHO_5 = 17, 68b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_PHR = 18, 69b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_ACC = 19, 70b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_1 = 20, 71b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_2 = 21, 72b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_3 = 22, 73b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_4 = 23, 74b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_5 = 24, 75b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 76b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_XSAMPA_PARSE = 25, 77b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SVOXPA_PARSE = 26, 78b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_XSAMPA2SVOXPA = 27, 79b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 80b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_6 = 28, 81b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_7 = 29, 82b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_8 = 30, 83b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_9 = 31, 84b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_10 = 32, 85b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 86b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 87b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen /* siggen 33 - 48 */ 88b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_DUR = 34, 89b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_LFZ1 = 35, 90b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_LFZ2 = 36, 91b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_LFZ3 = 37, 92b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_LFZ4 = 38, 93b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_LFZ5 = 39, 94b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_MGC1 = 40, 95b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_MGC2 = 41, 96b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_MGC3 = 42, 97b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_MGC4 = 43, 98b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DT_MGC5 = 44, 99b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_PDF_DUR = 45, 100b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_PDF_LFZ = 46, 101b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_PDF_MGC = 47, 102b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_PDF_PHS = 48, 103b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 104b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen /* user tpp 49 - 56 */ 105b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_TPP_USER_1 = 49, 106b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_TPP_USER_2 = 50, 107b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 108b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen /* user lex 57 - 63 */ 109b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_LEX_USER_1 = 57, 110b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_LEX_USER_2 = 58, 111b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 112b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_DUMMY = 127 113b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 114b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} picoknow_kb_id_t; 115b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 116b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_DEFAULT_RESOURCE_NAME (picoos_char *) "__PICO_DEF_RSRC" 117b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 118b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_MAX_NUM_WPHO_FSTS 5 119b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_MAX_NUM_SPHO_FSTS 10 120b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_MAX_NUM_ULEX 2 121b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_MAX_NUM_UTPP 2 122b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 123b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_KBID_WPHO_ARRAY { \ 124b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_WPHO_1, \ 125b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_WPHO_2, \ 126b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_WPHO_3, \ 127b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_WPHO_4, \ 128b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_WPHO_5 \ 129b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} 130b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 131b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_KBID_SPHO_ARRAY { \ 132b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_1, \ 133b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_2, \ 134b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_3, \ 135b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_4, \ 136b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_5, \ 137b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_6, \ 138b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_7, \ 139b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_8, \ 140b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_9, \ 141b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_FST_SPHO_10 \ 142b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} 143b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 144b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_KBID_ULEX_ARRAY { \ 145b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_LEX_USER_1, \ 146b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_LEX_USER_2, \ 147b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} 148b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 149b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_KBID_UTPP_ARRAY { \ 150b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_TPP_USER_1, \ 151b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen PICOKNOW_KBID_TPP_USER_2, \ 152b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} 153b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 154b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* max size (including NULLC) of descriptive name corresponding to KBID */ 155b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_MAX_KB_NAME_SIZ 16 156b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 157b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* maximum number of kbs in one resource */ 158b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOKNOW_MAX_NUM_RESOURCE_KBS 64 159b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 160b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 161b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/** class : KnowledgeBase 162b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * shortcut : kb 163b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 164b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */ 165b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picoknow_knowledge_base * picoknow_KnowledgeBase; 166b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 167b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef pico_status_t (* picoknow_kbSubDeallocate) (register picoknow_KnowledgeBase this, picoos_MemoryManager mm); 168b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 169b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chentypedef struct picoknow_knowledge_base { 170b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen /* public */ 171b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoknow_KnowledgeBase next; 172b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoknow_kb_id_t id; 173b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoos_uint8 * base; /* start address */ 174b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoos_uint32 size; /* size */ 175b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 176b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen /* protected */ 177b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen picoknow_kbSubDeallocate subDeallocate; 178b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen void * subObj; 179b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} picoknow_knowledge_base_t; 180b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 181b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenextern picoknow_KnowledgeBase picoknow_newKnowledgeBase(picoos_MemoryManager mm); 182b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 183b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenextern void picoknow_disposeKnowledgeBase(picoos_MemoryManager mm, picoknow_KnowledgeBase * this); 184b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 185b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifdef __cplusplus 186b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} 187b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif 188b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 189b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 190b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif /*PICOKNOW_H_*/ 191