Go to the documentation of this file.
24 #include <sys/types.h>
30 #if defined(__sun__) && defined(StupidSunHeaders)
45 #ifdef HAVE_LIBDMALLOC
57 #if !defined(__STDC__)
71 unsigned long hash = 0;
79 hash ^= (
unsigned long)*p<<rot;
81 if (rot >= (
sizeof(
unsigned long)-
sizeof(
char))*CHAR_BIT)
150 GATHER(add_stats.strcmps);
160 GATHER(add_stats.strcmps);
211 GATHER(add_ref_stats.calls);
212 ++(
SS(
str)->refcount);
249 GATHER(find_stats.strcmps);
251 GATHER(find_stats.hashed);
256 GATHER(find_stats.search);
257 GATHER(find_stats.strcmps);
260 GATHER(find_stats.linked);
324 static char line[80];
326 snprintf(
buf, size,
"%-13s %6s %6s %6s %6s %6s\n",
"",
"calls",
"hashed",
"strcmp",
"search",
"linked");
327 snprintf(
line,
sizeof(
line),
"%-13s %6d %6d %6d %6d %6d\n",
"add_string:", add_stats.calls, add_stats.hashed, add_stats.strcmps, add_stats.search, add_stats.linked);
329 snprintf(
line,
sizeof(
line),
"%-13s %6d\n",
"add_refcount:", add_ref_stats.calls);
331 snprintf(
line,
sizeof(
line),
"%-13s %6d\n",
"free_string:", free_stats.calls);
333 snprintf(
line,
sizeof(
line),
"%-13s %6d %6d %6d %6d %6d\n",
"find_string:", find_stats.calls, find_stats.hashed, find_stats.strcmps, find_stats.search, find_stats.linked);
335 snprintf(
line,
sizeof(
line),
"%-13s %6d\n",
"hashstr:", hash_stats.calls);
355 int entries = 0, refs = 0, links = 0;
381 snprintf(
buf, size,
"\n%d entries, %d refs, %d links.", entries, refs, links);
399 size_t len1 = 0, len2 = 0;
407 if (len1 >= (bufsize-len2))
void init_hash_table(void)
sstring add_refcount(sstring str)
std::size_t hash(const BasicJsonType &j)
hash a JSON value
sstring add_string(const char *str)
static shared_string * hash_table[TABLESIZE]
union _shared_string::@7 u
void free_string(sstring str)
static unsigned long hashstr(const char *str)
unsigned REFCOUNT_TYPE refcount
void fatal(enum fatal_error err)
struct _shared_string * previous
sstring find_string(const char *str)
void ss_dump_statistics(char *buf, size_t size)
struct _shared_string * next
char * ss_dump_table(int what, char *buf, size_t size)
int buf_overflow(const char *buf1, const char *buf2, size_t bufsize)
const typedef char * sstring
struct _shared_string ** array
static shared_string * new_shared_string(const char *str)
void LOG(LogLevel logLevel, const char *format,...)
int query_refcount(sstring str)