update fst core struct
This commit is contained in:
parent
53680b76bb
commit
32ac2d02c8
|
@ -255,4 +255,8 @@ FstType fstGetType(Fst *fst);
|
|||
CompiledAddr fstGetRootAddr(Fst *fst);
|
||||
Output fstEmptyFinalOutput(Fst *fst, bool *null);
|
||||
bool fstVerify(Fst *fst);
|
||||
|
||||
|
||||
//refactor this function
|
||||
bool fstBuilderNodeCompileTo(FstBuilderNode *b, FstCountingWriter *wrt, CompiledAddr lastAddr, CompiledAddr startAddr);
|
||||
#endif
|
||||
|
|
|
@ -41,7 +41,7 @@ FstBuilderNode *fstBuilderNodeClone(FstBuilderNode *src);
|
|||
|
||||
void fstBuilderNodeCloneFrom(FstBuilderNode *dst, FstBuilderNode *src);
|
||||
|
||||
bool fstBuilderNodeCompileTo(FstBuilderNode *b, FstCountingWriter *wrt, CompiledAddr lastAddr, CompiledAddr startAddr);
|
||||
//bool fstBuilderNodeCompileTo(FstBuilderNode *b, FstCountingWriter *wrt, CompiledAddr lastAddr, CompiledAddr startAddr);
|
||||
|
||||
void fstBuilderNodeDestroy(FstBuilderNode *node);
|
||||
|
||||
|
|
|
@ -733,6 +733,11 @@ bool fstNodeCompile(FstNode *node, void *w, CompiledAddr lastAddr, CompiledAddr
|
|||
return true;
|
||||
}
|
||||
|
||||
bool fstBuilderNodeCompileTo(FstBuilderNode *b, FstCountingWriter *wrt, CompiledAddr lastAddr, CompiledAddr startAddr) {
|
||||
return fstNodeCompile(NULL, wrt, lastAddr, startAddr, b);
|
||||
}
|
||||
|
||||
|
||||
|
||||
FstBuilder *fstBuilderCreate(void *w, FstType ty) {
|
||||
FstBuilder *b = malloc(sizeof(FstBuilder));
|
||||
|
|
|
@ -59,26 +59,27 @@ void fstBuilderNodeCloneFrom(FstBuilderNode *dst, FstBuilderNode *src) {
|
|||
src->trans = NULL;
|
||||
}
|
||||
|
||||
bool fstBuilderNodeCompileTo(FstBuilderNode *b, FstCountingWriter *wrt, CompiledAddr lastAddr, CompiledAddr startAddr) {
|
||||
size_t sz = taosArrayGetSize(b->trans);
|
||||
assert(sz < 256);
|
||||
if (FST_BUILDER_NODE_IS_FINAL(b)
|
||||
&& FST_BUILDER_NODE_TRANS_ISEMPTY(b)
|
||||
&& FST_BUILDER_NODE_FINALOUTPUT_ISZERO(b)) {
|
||||
return true;
|
||||
} else if (sz != 1 || b->isFinal) {
|
||||
// AnyTrans->Compile(w, addr, node);
|
||||
} else {
|
||||
FstTransition *tran = taosArrayGet(b->trans, 0);
|
||||
if (tran->addr == lastAddr && tran->out == 0) {
|
||||
//OneTransNext::compile(w, lastAddr, tran->inp);
|
||||
return true;
|
||||
} else {
|
||||
//OneTrans::Compile(w, lastAddr, *tran);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//bool fstBuilderNodeCompileTo(FstBuilderNode *b, FstCountingWriter *wrt, CompiledAddr lastAddr, CompiledAddr startAddr) {
|
||||
|
||||
//size_t sz = taosArrayGetSize(b->trans);
|
||||
//assert(sz < 256);
|
||||
//if (FST_BUILDER_NODE_IS_FINAL(b)
|
||||
// && FST_BUILDER_NODE_TRANS_ISEMPTY(b)
|
||||
// && FST_BUILDER_NODE_FINALOUTPUT_ISZERO(b)) {
|
||||
// return true;
|
||||
//} else if (sz != 1 || b->isFinal) {
|
||||
// // AnyTrans->Compile(w, addr, node);
|
||||
//} else {
|
||||
// FstTransition *tran = taosArrayGet(b->trans, 0);
|
||||
// if (tran->addr == lastAddr && tran->out == 0) {
|
||||
// //OneTransNext::compile(w, lastAddr, tran->inp);
|
||||
// return true;
|
||||
// } else {
|
||||
// //OneTrans::Compile(w, lastAddr, *tran);
|
||||
// return true;
|
||||
// }
|
||||
//}
|
||||
//return true;
|
||||
//}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue