-
Notifications
You must be signed in to change notification settings - Fork 494
Description
Functions that perform read-only operations, like sdscmp, are declared with const sds parameters. Due to typedef char *sds;, const sds resolves to char * const (a constant pointer to mutable data).
This signature incorrectly implies that the function might modify the content of the sds strings.
More importantly, it makes it impossible to pass a const char * (that is known to be a valid sds string) to these functions without a cast that discards the const qualifier, which fails compilation under -Werror.
To significantly improve const-correctness and interoperability with modern C/C++ codebases, I would like to propose introducing a new type for read-only sds strings:
typedef const char * const_sds;With this new type, the signatures of read-only functions could be updated or overloaded. For example:
int sdscmp(const_sds s1, const_sds s2);
size_t sdslen(const_sds s);