Lines Matching refs:stp

159 	Str_tbl	*stp;  in st_new()  local
161 if ((stp = calloc(1, sizeof (*stp))) == NULL) in st_new()
167 stp->st_strsize = stp->st_fullstrsize = stp->st_nextoff = 1; in st_new()
172 stp->st_flags = flags; in st_new()
173 if ((stp->st_flags & FLG_STTAB_COMPRESS) == 0) in st_new()
174 return (stp); in st_new()
176 if ((stp->st_lentree = calloc(1, sizeof (*stp->st_lentree))) == NULL) in st_new()
179 avl_create(stp->st_lentree, &avl_len_compare, sizeof (LenNode), in st_new()
182 return (stp); in st_new()
196 st_insert(Str_tbl *stp, const char *str) in st_insert() argument
206 assert((stp->st_flags & FLG_STTAB_COOKED) == 0); in st_insert()
215 stp->st_fullstrsize += len + 1; in st_insert()
216 stp->st_strcnt++; in st_insert()
218 if ((stp->st_flags & FLG_STTAB_COMPRESS) == 0) in st_insert()
227 if ((lnp = avl_find(stp->st_lentree, &ln, &where)) == NULL) { in st_insert()
238 avl_insert(stp->st_lentree, lnp, where); in st_insert()
265 st_delstring(Str_tbl *stp, const char *str) in st_delstring() argument
274 assert((stp->st_flags & FLG_STTAB_COOKED) == 0); in st_delstring()
277 stp->st_fullstrsize -= len + 1; in st_delstring()
279 if ((stp->st_flags & FLG_STTAB_COMPRESS) == 0) in st_delstring()
286 if ((lnp = avl_find(stp->st_lentree, &ln, 0)) != NULL) { in st_delstring()
309 st_destroy(Str_tbl *stp) in st_destroy() argument
318 for (mstr = stp->st_mstrlist, pmstr = 0; mstr; in st_destroy()
327 if (stp->st_hashbcks) { in st_destroy()
328 for (i = 0; i < stp->st_hbckcnt; i++) { in st_destroy()
329 for (sthash = stp->st_hashbcks[i], psthash = 0; in st_destroy()
338 free(stp->st_hashbcks); in st_destroy()
340 free(stp); in st_destroy()
389 st_setstring(Str_tbl *stp, const char *str, size_t *stoff) in st_setstring() argument
399 assert(stp->st_strbuf != NULL); in st_setstring()
401 assert(stp->st_flags & FLG_STTAB_COOKED); in st_setstring()
412 if ((stp->st_flags & FLG_STTAB_COMPRESS) == 0) { in st_setstring()
416 _stoff = stp->st_nextoff; in st_setstring()
420 if ((_stoff + stlen) > stp->st_fullstrsize) in st_setstring()
422 memcpy(stp->st_strbuf + _stoff, str, stlen); in st_setstring()
425 stp->st_nextoff += stlen; in st_setstring()
434 for (sthash = stp->st_hashbcks[hashval % stp->st_hbckcnt]; sthash; in st_setstring()
460 mstr->sm_stroff = stp->st_nextoff; in st_setstring()
465 if ((mstr->sm_stroff + mstrlen) > stp->st_fullstrsize) in st_setstring()
468 (void) memcpy(stp->st_strbuf + mstr->sm_stroff, in st_setstring()
470 stp->st_nextoff += mstrlen; in st_setstring()
483 st_hash_insert(Str_tbl *stp, const char *str, size_t len) in st_hash_insert() argument
487 uint_t bckcnt = stp->st_hbckcnt; in st_hash_insert()
488 Str_hash **hashbcks = stp->st_hashbcks; in st_hash_insert()
547 mstr->sm_next = stp->st_mstrlist; in st_hash_insert()
548 stp->st_mstrlist = mstr; in st_hash_insert()
549 stp->st_strsize += len + 1; in st_hash_insert()
557 stp->st_strsize += len - mstr->sm_strlen; in st_hash_insert()
582 st_getstrtab_sz(Str_tbl *stp) in st_getstrtab_sz() argument
584 assert(stp->st_fullstrsize > 0); in st_getstrtab_sz()
586 if ((stp->st_flags & FLG_STTAB_COMPRESS) == 0) { in st_getstrtab_sz()
587 stp->st_flags |= FLG_STTAB_COOKED; in st_getstrtab_sz()
588 return (stp->st_fullstrsize); in st_getstrtab_sz()
591 if ((stp->st_flags & FLG_STTAB_COOKED) == 0) { in st_getstrtab_sz()
595 stp->st_flags |= FLG_STTAB_COOKED; in st_getstrtab_sz()
600 stp->st_hbckcnt = findprime(stp->st_strcnt); in st_getstrtab_sz()
601 if ((stp->st_hashbcks = calloc(stp->st_hbckcnt, in st_getstrtab_sz()
602 sizeof (*stp->st_hashbcks))) == NULL) in st_getstrtab_sz()
609 if ((lnp = avl_first(stp->st_lentree)) == NULL) { in st_getstrtab_sz()
614 if (avl_numnodes(stp->st_lentree) == 0) { in st_getstrtab_sz()
615 assert(stp->st_strsize == 1); in st_getstrtab_sz()
616 return (stp->st_strsize); in st_getstrtab_sz()
631 if (st_hash_insert(stp, snp->sn_str, in st_getstrtab_sz()
654 lnp = AVL_NEXT(stp->st_lentree, lnp); in st_getstrtab_sz()
665 while ((lnp = avl_destroy_nodes(stp->st_lentree, in st_getstrtab_sz()
668 avl_destroy(stp->st_lentree); in st_getstrtab_sz()
669 free(stp->st_lentree); in st_getstrtab_sz()
670 stp->st_lentree = 0; in st_getstrtab_sz()
673 assert(stp->st_strsize > 0); in st_getstrtab_sz()
674 assert(stp->st_fullstrsize >= stp->st_strsize); in st_getstrtab_sz()
676 return (stp->st_strsize); in st_getstrtab_sz()
680 st_getstrbuf(Str_tbl *stp) in st_getstrbuf() argument
682 return (stp->st_strbuf); in st_getstrbuf()
690 st_setstrbuf(Str_tbl *stp, char *stbuf, size_t bufsize) in st_setstrbuf() argument
692 assert(stp->st_flags & FLG_STTAB_COOKED); in st_setstrbuf()
694 if ((stp->st_flags & FLG_STTAB_COMPRESS) == 0) { in st_setstrbuf()
695 if (bufsize < stp->st_fullstrsize) in st_setstrbuf()
698 if (bufsize < stp->st_strsize) in st_setstrbuf()
702 stp->st_strbuf = stbuf; in st_setstrbuf()
722 st_setallstrings(Str_tbl *stp) in st_setallstrings() argument
724 assert(stp->st_strbuf != NULL); in st_setallstrings()
725 assert((stp->st_flags & FLG_STTAB_COOKED)); in st_setallstrings()
726 assert((stp->st_flags & FLG_STTAB_COMPRESS)); in st_setallstrings()
728 for (Str_master *str = stp->st_mstrlist; str != NULL; in st_setallstrings()
732 res = st_setstring(stp, str->sm_str, NULL); in st_setallstrings()
742 st_findstring(Str_tbl *stp, const char *needle) in st_findstring() argument
748 assert(stp->st_strbuf != NULL); in st_findstring()
749 assert((stp->st_flags & FLG_STTAB_COOKED)); in st_findstring()
756 if ((stp->st_flags & FLG_STTAB_COMPRESS) == 0) { in st_findstring()
759 end = stp->st_strbuf + stp->st_fullstrsize; in st_findstring()
761 for (str = stp->st_strbuf; str < end; in st_findstring()
764 return (str - stp->st_strbuf); in st_findstring()
772 for (sthash = stp->st_hashbcks[hashval % stp->st_hbckcnt]; in st_findstring()