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