// ---------------------------------------------------------------- static void test_case( char* test_name, char** strings, int num_strings, char* buf, int* prc, int* pstridx, int* pmatchlen) { int stridx, matchlen, rc; parse_trie_t* ptrie = parse_trie_alloc(); printf("%s %s\n", sep, test_name); parse_trie_print(ptrie); for (stridx = 0; stridx < num_strings; stridx++) { printf("Adding string[%d] = [%s]\n", stridx, strings[stridx]); parse_trie_add_string(ptrie, strings[stridx], stridx); parse_trie_print(ptrie); } stridx = -2; matchlen = -2; rc = parse_trie_match(ptrie, buf, 0, strlen(buf), 0xff, &stridx, &matchlen); parse_trie_free(ptrie); printf("buf = %s\n", buf); printf("rc = %d\n", rc); printf("stridx = %d (%s)\n", stridx, strings[stridx]); printf("matchlen = %d\n", matchlen); *prc = rc; *pstridx = stridx; *pmatchlen = matchlen; }
// ---------------------------------------------------------------- static void lrec_reader_mmap_csv_free(lrec_reader_t* preader) { lrec_reader_mmap_csv_state_t* pstate = preader->pvstate; for (lhmslve_t* pe = pstate->pheader_keepers->phead; pe != NULL; pe = pe->pnext) { header_keeper_t* pheader_keeper = pe->pvvalue; header_keeper_free(pheader_keeper); } lhmslv_free(pstate->pheader_keepers); parse_trie_free(pstate->pno_dquote_parse_trie); parse_trie_free(pstate->pdquote_parse_trie); rslls_free(pstate->pfields); sb_free(pstate->psb); free(pstate->ifs_eof); free(pstate->dquote_irs); free(pstate->dquote_ifs); free(pstate); free(preader); }