Lines Matching refs:impl

41   SR_SemanticGraphImpl* impl;
48 impl = NEW(SR_SemanticGraphImpl, MTAG);
49 if (impl == NULL)
54 /* do not assume NEW initialize impl as zero, do it here */
55 memset(impl, 0, sizeof(SR_SemanticGraphImpl));
57 impl->Interface.destroy = &SR_SemanticGraph_Destroy;
58 impl->Interface.unload = &SR_SemanticGraph_Unload;
59 impl->Interface.load = &SR_SemanticGraph_Load;
60 impl->Interface.save = &SR_SemanticGraph_Save;
61 impl->Interface.addWordToSlot = &SR_SemanticGraph_AddWordToSlot;
62 impl->Interface.reset = &SR_SemanticGraph_Reset;
63 impl->script_olabel_offset = SEMGRAPH_SCRIPT_OFFSET;
64 impl->scopes_olabel_offset = SEMGRAPH_SCOPE_OFFSET;
66 *self = (SR_SemanticGraph*) impl;
76 SR_SemanticGraphImpl* impl = (SR_SemanticGraphImpl*) self;
84 FREE(impl);
88 ESR_ReturnCode sr_semanticgraph_loadV2(SR_SemanticGraphImpl* impl, wordmap* ilabels, PFile* fp);
94 SR_SemanticGraphImpl* impl = (SR_SemanticGraphImpl*) self;
138 rc = sr_semanticgraph_loadV2(impl, ilabels, fp);
152 if (impl->arc_token_list != NULL)
154 FREE(impl->arc_token_list);
155 impl->arc_token_list = NULL;
161 static ESR_ReturnCode deserializeArcTokenInfoV2(SR_SemanticGraphImpl *impl,
164 static ESR_ReturnCode serializeArcTokenInfoV2(SR_SemanticGraphImpl *impl,
167 ESR_ReturnCode sr_semanticgraph_loadV2(SR_SemanticGraphImpl* impl, wordmap* ilabels, PFile* fp)
213 impl->script_olabel_offset = (wordID)tmp[i++];
214 impl->scopes_olabel_offset = (wordID)tmp[i++];
218 if ((rc = deserializeArcTokenInfoV2(impl, fp)) != ESR_SUCCESS)
225 impl->ilabels = ilabels;
228 if ((rc = deserializeWordMapV2(&impl->scopes_olabels, fp)) != ESR_SUCCESS)
235 if ((rc = deserializeWordMapV2(&impl->scripts, fp)) != ESR_SUCCESS)
615 ESR_ReturnCode sr_semanticgraph_saveV1(SR_SemanticGraphImpl* impl, const LCHAR* g2g);
616 ESR_ReturnCode sr_semanticgraph_saveV2(SR_SemanticGraphImpl* impl, const LCHAR* g2g);
620 SR_SemanticGraphImpl* impl = (SR_SemanticGraphImpl*) self;
625 rc = sr_semanticgraph_saveV2(impl, g2g);
636 int sr_semanticgraph_get_type(SR_SemanticGraphImpl* impl)
638 arc_token *atoken, *arc_token_list = impl->arc_token_list;
641 atoken = impl->arc_token_list;
663 if (expected_ilabel != impl->ilabels->num_words)
679 ESR_ReturnCode sr_semanticgraph_saveV2(SR_SemanticGraphImpl* impl, const LCHAR* g2g)
705 header.sgtype = sr_semanticgraph_get_type(impl);
726 parser = impl->arc_token_list;
727 parser = ARC_TOKEN_PTR(impl->arc_token_list, parser->first_next_arc);
728 for (i = NUM_ITEMLIST_HDRWDS; i < impl->ilabels->num_words; i++)
730 for (atok = parser; atok; atok = ARC_TOKEN_PTR(impl->arc_token_list, atok->next_token_index))
748 if ((rc = serializeWordMapV2(impl->scripts, fp)) != ESR_SUCCESS)
758 tmp[i++] = impl->script_olabel_offset;
759 tmp[i++] = impl->scopes_olabel_offset;
770 if ((rc = serializeArcTokenInfoV2(impl, fp)) != ESR_SUCCESS)
779 if ((rc = serializeWordMapV2(impl->scopes_olabels, fp)) != ESR_SUCCESS)
785 if ((rc = serializeWordMapV2(impl->scripts, fp)) != ESR_SUCCESS)
1023 struct SR_SemanticGraphImpl_t *impl = (struct SR_SemanticGraphImpl_t*) self;
1048 slotID = wordmap_find_rule_index(impl->ilabels, veslot);
1054 wdID = wordmap_find_index_in_rule(impl->ilabels, word, slotID);
1071 token = arc_tokens_find_ilabel(impl->arc_token_list, impl->arcs_for_slot[slotID], wdID);
1078 scriptID = wordmap_find_index(impl->scripts, script);
1080 scriptID = wordmap_add_word(impl->scripts, script);
1087 token = impl->arcs_for_slot[slotID];
1088 tmp = arc_tokens_get_free(impl->arc_token_list, &(impl->arc_token_freelist));
1092 tmp_arc_token_list_len = impl->arc_token_list_len * FST_GROW_FACTOR;
1093 if(tmp_arc_token_list_len - impl->arc_token_list_len <=FST_GROWARCS_MIN)
1101 memcpy(tmp_arc_token_list,impl->arc_token_list, impl->arc_token_list_len*sizeof(arc_token));
1105 if(impl->arcs_for_slot[i] != NULL) {
1106 offset = impl->arcs_for_slot[i] - impl->arc_token_list;
1107 impl->arcs_for_slot[i] = tmp_arc_token_list + offset;
1110 token = impl->arcs_for_slot[slotID];
1112 ASSERT( impl->arc_token_freelist == NULL);
1114 impl->arc_token_freelist = tmp_arc_token_list + impl->arc_token_list_len;
1116 FREE(impl->arc_token_list);
1117 impl->arc_token_insert_start = tmp_arc_token_list + (impl->arc_token_insert_start - impl->arc_token_list); //Rabih fix
1118 impl->arc_token_list = tmp_arc_token_list;
1120 for (i = impl->arc_token_list_len; i < tmp_arc_token_list_len - 1; i++)
1122 impl->arc_token_list[i].first_next_arc = ARC_TOKEN_NULL;
1123 impl->arc_token_list[i].next_token_index = ARC_TOKEN_LNK(impl->arc_token_list, (i + 1));
1125 impl->arc_token_list[i].first_next_arc = ARC_TOKEN_NULL;
1126 impl->arc_token_list[i].next_token_index = ARC_TOKEN_NULL;
1128 impl->arc_token_list_len = tmp_arc_token_list_len;
1129 tmp = arc_tokens_get_free(impl->arc_token_list, &(impl->arc_token_freelist));
1136 impl->arcs_for_slot[slotID] = tmp;
1137 tmp->next_token_index = ARC_TOKEN_PTR2LNK(impl->arc_token_list, token);
1139 tmp->olabel = (wordID)(impl->script_olabel_offset + scriptID);
1143 old_scriptID = token->olabel - impl->script_olabel_offset;
1145 if (!LSTRCMP(impl->scripts->words[old_scriptID], script))
1152 CHKLOG(rc, make_union_of_scripts(union_script, sizeof(union_script), impl->scripts->words[old_scriptID], script));
1156 impl->scripts->words[old_scriptID], impl->ilabels->words[slotID]);
1159 scriptID = wordmap_find_index(impl->scripts, union_script);
1161 scriptID = wordmap_add_word(impl->scripts, union_script);
1169 token->olabel = (wordID)(impl->script_olabel_offset + scriptID);
1183 struct SR_SemanticGraphImpl_t *impl = (struct SR_SemanticGraphImpl_t*) self;
1188 wordmap_reset(impl->scopes_olabels);
1189 wordmap_reset(impl->scripts);
1190 wordmap_reset(impl->ilabels); //Rabih: I added this
1191 for (slotid = 1; slotid < impl->ilabels->num_slots; slotid++)
1193 tmp = impl->arcs_for_slot[slotid];
1194 arc_tokens_free_list(impl->arc_token_list, &(impl->arc_token_freelist), tmp);
1195 impl->arcs_for_slot[slotid] = NULL;
1198 for (count = 0, tmp = impl->arc_token_freelist; tmp != NULL;
1199 tmp = ARC_TOKEN_PTR(impl->arc_token_list, tmp->next_token_index))
1210 if(impl->ilabels->num_words == impl->ilabels->num_base_words)
1213 impl->arc_token_list_len = (size_t)(impl->arc_token_insert_start - impl->arc_token_list);
1214 tmp_arc_token_list= NEW_ARRAY(arc_token,impl->arc_token_list_len, L("semgraph.wordgraph"));
1215 memcpy(tmp_arc_token_list,impl->arc_token_list, impl->arc_token_list_len*sizeof(arc_token));
1217 impl->arc_token_freelist = NULL;
1219 FREE(impl->arc_token_list);
1220 impl->arc_token_list = tmp_arc_token_list;
1225 static ESR_ReturnCode serializeArcTokenInfoV2(SR_SemanticGraphImpl *impl,
1232 if (pfwrite(&impl->arc_token_list_len, 2, 1, fp) != 1)
1235 idx = PTR_TO_IDX(impl->arc_token_freelist, impl->arc_token_list);
1240 idx = PTR_TO_IDX(impl->arc_token_insert_start, impl->arc_token_list);
1249 for (i = 0; i < impl->arc_token_list_len; ++i)
1251 arc_token* token = &impl->arc_token_list[i];
1254 tmp[2] = ARC_TOKEN_IDX(impl->arc_token_list, token->first_next_arc);
1255 tmp[3] = ARC_TOKEN_IDX(impl->arc_token_list, token->next_token_index);
1265 idx[i] = PTR_TO_IDX(impl->arcs_for_slot[i], impl->arc_token_list);
1273 static ESR_ReturnCode deserializeArcTokenInfoV2(SR_SemanticGraphImpl *impl,
1281 if (pfread(&impl->arc_token_list_len, 2, 1, fp) != 1)
1288 impl->arc_token_list = NEW_ARRAY(arc_token,
1289 impl->arc_token_list_len,
1292 if (impl->arc_token_list == NULL)
1306 impl->arc_token_freelist = IDX_TO_PTR(idx, impl->arc_token_list);
1315 impl->arc_token_insert_start = IDX_TO_PTR(idx, impl->arc_token_list);
1316 // impl->arc_token_insert_start = impl->arc_token_list + impl->arc_token_list_len; // Rabih's fix
1324 impl->arc_token_insert_end = 0;
1326 for (i = 0; i < impl->arc_token_list_len; ++i)
1328 arc_token* token = &impl->arc_token_list[i];
1339 token->first_next_arc = ARC_TOKEN_LNK(impl->arc_token_list, tmp[2]);
1343 token->next_token_index = ARC_TOKEN_LNK(impl->arc_token_list, tmp[3]);
1356 impl->arcs_for_slot[i] = IDX_TO_PTR(idx[i], impl->arc_token_list);
1362 FREE(impl->arc_token_list);
1363 impl->arc_token_list =
1364 impl->arc_token_freelist =
1365 impl->arc_token_insert_start =
1366 impl->arc_token_insert_end = NULL;