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 picokpr.h
18  *
19  * knowledge handling for text preprocessing
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 picokpr
30 
31  * <b> Knowledge handling for text preprocessing </b>\n
32  *
33 */
34 
35 #ifndef PICOKPR_H_
36 #define PICOKPR_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 /* function to create specialized kb, */
51 /* to be used by picorsrc only */
52 /* ************************************************************/
53 
54 pico_status_t picokpr_specializePreprocKnowledgeBase(picoknow_KnowledgeBase this,
55                                                      picoos_Common common);
56 
57 
58 /* ************************************************************/
59 /* preproc type and getPreproc function */
60 /* ************************************************************/
61 
62 /* maximal array length in preproc knowledge */
63 #define NPPMaxStrArrLen       100000000
64 #define NPPMaxLexCatArrLen    65536
65 #define NPPMaxAttrValLen      65536
66 #define NPPMaxOutItemArrLen   65536
67 #define NPPMaxTokArrLen       65536
68 #define NPPMaxProdArrLen      65536
69 #define NPPMaxCtxArrLen       65536
70 
71 /* array offset types */
72 typedef picoos_uint32 picokpr_StrArrOffset;
73 typedef picoos_uint16 picokpr_LexCatArrOffset;
74 typedef picoos_uint16 picokpr_AttrValArrOffset;
75 typedef picoos_uint16 picokpr_OutItemArrOffset;
76 typedef picoos_uint16 picokpr_TokArrOffset;
77 typedef picoos_uint16 picokpr_ProdArrOffset;
78 typedef picoos_uint16 picokpr_CtxArrOffset;
79 
80 typedef picoos_uchar * picokpr_VarStrPtr;
81 
82 typedef picoos_int16 picokpr_LexCat;
83 typedef picoos_uint32 picokpr_TokSetNP;
84 typedef picoos_uint32 picokpr_TokSetWP;
85 
86 /* preproc types */
87 typedef struct picokpr_preproc * picokpr_Preproc;
88 
89 /* return kb preproc for usage in PU */
90 picokpr_Preproc picokpr_getPreproc(picoknow_KnowledgeBase this);
91 
92 
93 /* *****************************************************************************/
94 /* access routines */
95 /* *****************************************************************************/
96 
97 /* knowledge base access routines for strings in StrArr */
98 extern picokpr_VarStrPtr picokpr_getVarStrPtr(picokpr_Preproc preproc, picokpr_StrArrOffset ofs);
99 extern picoos_bool picokpr_isEqual (picokpr_Preproc preproc, picoos_uchar str[], picoos_int32 len__9, picokpr_StrArrOffset str2);
100 extern picoos_bool picokpr_isEqualHead (picokpr_Preproc preproc, picoos_uchar str[], picoos_int32 len__10, picokpr_StrArrOffset head);
101 extern picoos_bool picokpr_isEqualMid (picokpr_Preproc preproc, picoos_uchar str[], picoos_int32 len__11, picokpr_StrArrOffset mid);
102 extern picoos_bool picokpr_isEqualTail (picokpr_Preproc preproc, picoos_uchar str[], picoos_int32 len__12, picokpr_StrArrOffset tail);
103 
104 /* knowledge base access routines for lexical categories in LexCatArr */
105 extern picokpr_LexCat picokpr_getLexCat(picokpr_Preproc preproc, picokpr_LexCatArrOffset ofs);
106 
107 /* knowledge base access routines for AttrVal fields in AttrValArr */
108 extern picoos_int32 picokpr_getAttrValArrInt32(picokpr_Preproc preproc, picokpr_AttrValArrOffset ofs);
109 
110 /* knowledge base access routines for out items fields in OutItemArr */
111 extern picokpr_StrArrOffset picokpr_getOutItemStrOfs(picokpr_Preproc preproc, picokpr_OutItemArrOffset ofs);
112 extern picokpr_VarStrPtr picokpr_getOutItemStr(picokpr_Preproc preproc, picokpr_OutItemArrOffset ofs);
113 extern picoos_int32 picokpr_getOutItemType(picokpr_Preproc preproc, picokpr_OutItemArrOffset ofs);
114 extern picoos_int32 picokpr_getOutItemVal(picokpr_Preproc preproc, picokpr_OutItemArrOffset ofs);
115 extern picokpr_OutItemArrOffset picokpr_getOutItemArgOfs(picokpr_Preproc preproc, picokpr_OutItemArrOffset ofs);
116 extern picokpr_OutItemArrOffset picokpr_getOutItemNextOfs(picokpr_Preproc preproc, picokpr_OutItemArrOffset ofs);
117 
118 /* knowledge base access routines for tokens in TokArr */
119 extern picokpr_TokSetNP picokpr_getTokSetNP(picokpr_Preproc preproc, picokpr_TokArrOffset ofs);
120 extern picokpr_TokSetWP picokpr_getTokSetWP(picokpr_Preproc preproc, picokpr_TokArrOffset ofs);
121 extern picokpr_TokArrOffset picokpr_getTokNextOfs(picokpr_Preproc preproc, picokpr_TokArrOffset ofs);
122 extern picokpr_TokArrOffset picokpr_getTokAltLOfs(picokpr_Preproc preproc, picokpr_TokArrOffset ofs);
123 extern picokpr_TokArrOffset picokpr_getTokAltROfs(picokpr_Preproc preproc, picokpr_TokArrOffset ofs);
124 extern picokpr_AttrValArrOffset picokpr_getTokAttribOfs(picokpr_Preproc preproc, picokpr_TokArrOffset ofs);
125 
126 /* knowledge base access routines for productions in ProdArr */
127 extern picoos_int32 picokpr_getProdArrLen(picokpr_Preproc preproc);
128 extern picoos_int32 picokpr_getProdPrefCost(picokpr_Preproc preproc, picokpr_ProdArrOffset ofs);
129 extern picokpr_StrArrOffset picokpr_getProdNameOfs(picokpr_Preproc preproc, picokpr_ProdArrOffset ofs);
130 extern picokpr_TokArrOffset picokpr_getProdATokOfs(picokpr_Preproc preproc, picokpr_ProdArrOffset ofs);
131 extern picokpr_TokArrOffset picokpr_getProdETokOfs(picokpr_Preproc preproc, picokpr_ProdArrOffset ofs);
132 
133 /* knowledge base access routines for contexts in CtxArr */
134 extern picoos_int32 picokpr_getCtxArrLen(picokpr_Preproc preproc);
135 extern picokpr_StrArrOffset picokpr_getCtxCtxNameOfs(picokpr_Preproc preproc, picokpr_CtxArrOffset ofs);
136 extern picokpr_StrArrOffset picokpr_getCtxNetNameOfs(picokpr_Preproc preproc, picokpr_CtxArrOffset ofs);
137 extern picokpr_StrArrOffset picokpr_getCtxProdNameOfs(picokpr_Preproc preproc, picokpr_CtxArrOffset ofs);
138 
139 /* knowledge base access routines for preprocs */
140 extern picokpr_VarStrPtr picokpr_getPreprocNetName(picokpr_Preproc preproc);
141 
142 #ifdef __cplusplus
143 }
144 #endif
145 
146 
147 #endif /*PICOKPR_H_*/
148