Merge pull request #8756 from taosdata/origin/3.0/fst

add core struct
This commit is contained in:
Yihao Deng 2021-11-21 20:02:50 +08:00 committed by GitHub
commit 71f6bb6546
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 1 deletions

View File

@ -33,6 +33,8 @@ typedef struct FstBuilderNode {
FstBuilderNode *fstBuilderNodeDefault(); FstBuilderNode *fstBuilderNodeDefault();
FstBuilderNode *fstBuilderNodeClone(FstBuilderNode *src);
void fstBuilderNodeCloneFrom(FstBuilderNode *dst, FstBuilderNode *src); void fstBuilderNodeCloneFrom(FstBuilderNode *dst, FstBuilderNode *src);
#endif #endif

View File

@ -54,5 +54,4 @@ FstRegistry* fstRegistryCreate(uint64_t tableSize, uint64_t mruSize);
FstRegistryEntry* fstRegistryGetEntry(FstRegistry *registry, FstBuilderNode *bNode); FstRegistryEntry* fstRegistryGetEntry(FstRegistry *registry, FstBuilderNode *bNode);
uint64_t fstRegistryHash(FstRegistry *registry, FstBuilderNode *node);
#endif #endif

View File

@ -22,6 +22,26 @@ FstBuilderNode *fstBuilderNodeDefault() {
return bn; return bn;
} }
FstBuilderNode *fstBuilderNodeClone(FstBuilderNode *src) {
FstBuilderNode *node = malloc(sizeof(FstBuilderNode));
if (node == NULL) { return NULL; }
size_t sz = taosArrayGetSize(src->trans);
SArray *trans = taosArrayInit(sz, sizeof(FstTransition));
for (size_t i = 0; i < sz; i++) {
FstTransition *tran = taosArrayGet(src->trans, i);
FstTransition t = *tran;
taosArrayPush(trans, &t);
}
node->trans = trans;
node->isFinal = src->isFinal;
node->finalOutput = src->finalOutput;
return node;
}
// not destroy src, User's bussiness // not destroy src, User's bussiness
void fstBuilderNodeCloneFrom(FstBuilderNode *dst, FstBuilderNode *src) { void fstBuilderNodeCloneFrom(FstBuilderNode *dst, FstBuilderNode *src) {
if (dst == NULL || src == NULL) { return; } if (dst == NULL || src == NULL) { return; }