diff options
-rw-r--r-- | src/sds.h | 93 |
1 files changed, 56 insertions, 37 deletions
@@ -56,48 +56,67 @@ static inline size_t sdsavail(const sds s) { return sdsheader(s)->free; } -sds sdsnewlen(const void *init, size_t initlen); -sds sdsnew(const char *init); -sds sdsempty(void); -size_t sdslen(const sds s); -sds sdsdup(const sds s); -void sdsfree(sds s); +/** + * User API function prototypes + */ + +/// Initialization +sds sdsnewlen(const void *init, size_t initlen); +sds sdsnew(const char *init); +sds sdsdup(const sds s); +sds sdsempty(void); +sds sdsfromlonglong(long long value); + + +/// Querying size_t sdsavail(const sds s); -sds sdsgrowzero(sds s, size_t len); -sds sdscatlen(sds s, const void *t, size_t len); -sds sdscat(sds s, const char *t); -sds sdscatsds(sds s, const sds t); -sds sdscpylen(sds s, const char *t, size_t len); -sds sdscpy(sds s, const char *t); - -sds sdscatvprintf(sds s, const char *fmt, va_list ap); +size_t sdslen(const sds s); +int sdscmp(const sds s1, const sds s2); + + +/// Modification +void sdsclear(sds s); +sds sdsgrowzero(sds s, size_t len); +sds sdscpylen(sds s, const char *t, size_t len); +sds sdscpy(sds s, const char *t); +sds sdsjoin(char **argv, int argc, char *sep, size_t seplen); +sds sdsjoinsds(sds *argv, int argc, const char *sep, size_t seplen); +sds sdsmapchars(sds s, const char *from, const char *to, size_t setlen); +void sdsrange(sds s, ptrdiff_t start, ptrdiff_t end); +void sdstolower(sds s); +void sdstoupper(sds s); +void sdstrim(sds s, const char *cset); +void sdsupdatelen(sds s); +sds *sdssplitargs(const char *line, int *argc); +sds *sdssplitlen(const char *s, size_t len, const char *sep, size_t seplen, size_t *count); + +// Concatenation +sds sdscat(sds s, const char *t); +sds sdscatsds(sds s, const sds t); +sds sdscatlen(sds s, const void *t, size_t len); +sds sdscatrepr(sds s, const char *p, size_t len); +sds sdscatvprintf(sds s, const char *fmt, va_list ap); #ifdef __GNUC__ -sds sdscatprintf(sds s, const char *fmt, ...) - __attribute__((format(printf, 2, 3))); +sds sdscatprintf(sds s, const char *fmt, ...) + __attribute__((format(printf, 2, 3))); #else -sds sdscatprintf(sds s, const char *fmt, ...); +sds sdscatprintf(sds s, const char *fmt, ...); #endif -void sdstrim(sds s, const char *cset); -void sdsrange(sds s, ptrdiff_t start, ptrdiff_t end); -void sdsupdatelen(sds s); -void sdsclear(sds s); -int sdscmp(const sds s1, const sds s2); -sds *sdssplitlen(const char *s, size_t len, const char *sep, size_t seplen, size_t *count); -void sdsfreesplitres(sds *tokens, size_t count); -void sdstolower(sds s); -void sdstoupper(sds s); -sds sdsfromlonglong(long long value); -sds sdscatrepr(sds s, const char *p, size_t len); -sds *sdssplitargs(const char *line, int *argc); -sds sdsmapchars(sds s, const char *from, const char *to, size_t setlen); -sds sdsjoin(char **argv, int argc, char *sep, size_t seplen); -sds sdsjoinsds(sds *argv, int argc, const char *sep, size_t seplen); - -/* Low level functions exposed to the user API */ -sds sdsMakeRoomFor(sds s, size_t addlen); -void sdsIncrLen(sds s, size_t incr); -sds sdsRemoveFreeSpace(sds s); + +/// Freeing +void sdsfree(sds s); +void sdsfreesplitres(sds *tokens, size_t count); + + +/// Low-level functions size_t sdsAllocSize(sds s); +void sdsIncrLen(sds s, size_t incr); +sds sdsMakeRoomFor(sds s, size_t addlen); +sds sdsRemoveFreeSpace(sds s); + +/// Low-level helper functions +int is_hex_digit(char c); +int hex_digit_to_int(char c); #endif |