struct st_hash_type now free from ANYARGS
After 5e86b005c0f2ef30df2f9906c7e2f3abefe286a2, I now think ANYARGS is dangerous and should be extinct. This commit adds function prototypes for struct st_hash_type. Honestly I don't understand why they were commented out at the first place.
This commit is contained in:
parent
6dd60cf114
commit
78628618da
@ -59,8 +59,8 @@ typedef char st_check_for_sizeof_st_index_t[SIZEOF_VOIDP == (int)sizeof(st_index
|
|||||||
#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
|
#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
|
||||||
|
|
||||||
struct st_hash_type {
|
struct st_hash_type {
|
||||||
int (*compare)(ANYARGS /*st_data_t, st_data_t*/); /* st_compare_func* */
|
int (*compare)(st_data_t, st_data_t); /* st_compare_func* */
|
||||||
st_index_t (*hash)(ANYARGS /*st_data_t*/); /* st_hash_func* */
|
st_index_t (*hash)(st_data_t); /* st_hash_func* */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT)
|
#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT)
|
||||||
|
23
st.c
23
st.c
@ -145,16 +145,17 @@ static const struct st_hash_type st_hashtype_num = {
|
|||||||
st_numhash,
|
st_numhash,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* extern int strcmp(const char *, const char *); */
|
static int st_strcmp(st_data_t, st_data_t);
|
||||||
static st_index_t strhash(st_data_t);
|
static st_index_t strhash(st_data_t);
|
||||||
static const struct st_hash_type type_strhash = {
|
static const struct st_hash_type type_strhash = {
|
||||||
strcmp,
|
st_strcmp,
|
||||||
strhash,
|
strhash,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int st_locale_insensitive_strcasecmp_i(st_data_t lhs, st_data_t rhs);
|
||||||
static st_index_t strcasehash(st_data_t);
|
static st_index_t strcasehash(st_data_t);
|
||||||
static const struct st_hash_type type_strcasehash = {
|
static const struct st_hash_type type_strcasehash = {
|
||||||
st_locale_insensitive_strcasecmp,
|
st_locale_insensitive_strcasecmp_i,
|
||||||
strcasehash,
|
strcasehash,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2091,6 +2092,22 @@ st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
st_strcmp(st_data_t lhs, st_data_t rhs)
|
||||||
|
{
|
||||||
|
const char *s1 = (char *)lhs;
|
||||||
|
const char *s2 = (char *)rhs;
|
||||||
|
return strcmp(s1, s2);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
st_locale_insensitive_strcasecmp_i(st_data_t lhs, st_data_t rhs)
|
||||||
|
{
|
||||||
|
const char *s1 = (char *)lhs;
|
||||||
|
const char *s2 = (char *)rhs;
|
||||||
|
return st_locale_insensitive_strcasecmp(s1, s2);
|
||||||
|
}
|
||||||
|
|
||||||
NO_SANITIZE("unsigned-integer-overflow", PUREFUNC(static st_index_t strcasehash(st_data_t)));
|
NO_SANITIZE("unsigned-integer-overflow", PUREFUNC(static st_index_t strcasehash(st_data_t)));
|
||||||
static st_index_t
|
static st_index_t
|
||||||
strcasehash(st_data_t arg)
|
strcasehash(st_data_t arg)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user