diff options
Diffstat (limited to 'usr/src/cmd/sgs/include/string_table.h')
| -rw-r--r-- | usr/src/cmd/sgs/include/string_table.h | 101 |
1 files changed, 12 insertions, 89 deletions
diff --git a/usr/src/cmd/sgs/include/string_table.h b/usr/src/cmd/sgs/include/string_table.h index 433ca394e2..1bd2d383e2 100644 --- a/usr/src/cmd/sgs/include/string_table.h +++ b/usr/src/cmd/sgs/include/string_table.h @@ -2,9 +2,8 @@ * CDDL HEADER START * * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2003 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -29,109 +28,33 @@ #pragma ident "%Z%%M% %I% %E% SMI" -#include <stdio.h> #include <sys/types.h> -#include <sys/avl.h> -#include <sgs.h> #ifdef __cplusplus extern "C" { #endif -typedef struct str_hash Str_hash; -typedef struct str_tbl Str_tbl; -typedef struct str_master Str_master; - - -/* - * The Stringlist is the list of 'input strings' - * associatied with the AVL nodes Stringelem. - */ -typedef struct stringlist { - const char *sl_string; - struct stringlist *sl_next; -} Stringlist; - -/* - * Nodes for the initial AVL tree which contains all of - * the input strings. The AVL tree is indexed off of - * the length of the strings. This permits later traversal - * of all of the strings based off of their string length. - */ -typedef struct { - avl_node_t se_avlnode; - Stringlist *se_strlist; - uint_t se_stlen; -} Stringelem; - - -/* - * Pointer to the Master string, other strings may be suffixes - * of this string. - */ -struct str_master { - const char *sm_str; /* pointer to master string */ - Str_master *sm_next; /* used for tracking master strings */ - uint_t sm_stlen; /* length of master string */ - uint_t sm_hashval; /* hashval of master string */ - uint_t sm_stoff; /* offset into destination strtab */ -}; - - -/* - * Represents a individual string that was input into - * the String hash table. The string may either be a - * suffix of another string or a master string. - */ -struct str_hash { - uint_t hi_stlen; /* string length */ - uint_t hi_refcnt; /* # of references to str */ - uint_t hi_hashval; /* hash for string */ - Str_master *hi_mstr; /* pointer to master string */ - Str_hash *hi_next; /* next entry in hash bckt */ -}; - -/* - * Controlling data structure for a String Table - */ -struct str_tbl { - avl_tree_t *st_strtree; /* avl tree of initial strs */ - char *st_strbuf; /* string buffer */ - Str_hash **st_hashbcks; /* hash buckets */ - Str_master *st_mstrlist; /* list of all master strings */ - uint_t st_fullstringsize; /* uncompressed table size */ - uint_t st_nextoff; /* next available string */ - uint_t st_stringsize; /* compressed size */ - uint_t st_stringcnt; /* # of strings */ - uint_t st_hbckcnt; /* # of buckets in hashlist */ - uint_t st_flags; -}; - -#define FLG_STTAB_COOKED 0x00000001 /* offset has been assigned */ -#define FLG_STTAB_COMPRESS 0x00000002 /* build compressed str tab */ - -/* - * starting value for use with string hashing functions - * inside of string_table.c - */ -#define HASHSEED 5381 - /* - * Flags for st_new + * Exported, opaque string table handle. */ -#define FLG_STNEW_COMPRESS 0x00000001 /* build compressed str tab */ +typedef struct str_tbl Str_tbl; /* - * exported string_table.c functions + * Exported string table functions. */ extern int st_delstring(Str_tbl *, const char *); extern void st_destroy(Str_tbl *); extern uint_t st_getstrtab_sz(Str_tbl *); extern const char *st_getstrbuf(Str_tbl *); extern int st_insert(Str_tbl *, const char *); +extern Str_tbl *st_new(uint_t); extern int st_setstrbuf(Str_tbl *, char *, uint_t); extern int st_setstring(Str_tbl *, const char *, uint_t *); -extern Str_tbl *st_new(uint_t); + +/* + * Exported flags values for st_new(). + */ +#define FLG_STNEW_COMPRESS 0x01 /* compressed string table */ #ifdef __cplusplus } |
