X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/603e616bf4e09cdbbfeaf77a5e2a02876c229c35..2753acf1d642628d01de0d2a477c5d905fb761bc:/src/sds.h diff --git a/src/sds.h b/src/sds.h index 91a38782..ee336d1d 100644 --- a/src/sds.h +++ b/src/sds.h @@ -42,6 +42,16 @@ struct sdshdr { char buf[]; }; +static inline size_t sdslen(const sds s) { + struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr))); + return sh->len; +} + +static inline size_t sdsavail(const sds s) { + struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr))); + return sh->free; +} + sds sdsnewlen(const void *init, size_t initlen); sds sdsnew(const char *init); sds sdsempty(); @@ -52,6 +62,7 @@ size_t sdsavail(sds s); sds sdsgrowzero(sds s, size_t len); sds sdscatlen(sds s, void *t, size_t len); sds sdscat(sds s, char *t); +sds sdscatsds(sds s, sds t); sds sdscpylen(sds s, char *t, size_t len); sds sdscpy(sds s, char *t); @@ -66,6 +77,7 @@ sds sdscatprintf(sds s, const char *fmt, ...); sds sdstrim(sds s, const char *cset); sds sdsrange(sds s, int start, int end); void sdsupdatelen(sds s); +void sdsclear(sds s); int sdscmp(sds s1, sds s2); sds *sdssplitlen(char *s, int len, char *sep, int seplen, int *count); void sdsfreesplitres(sds *tokens, int count); @@ -74,5 +86,11 @@ void sdstoupper(sds s); sds sdsfromlonglong(long long value); sds sdscatrepr(sds s, char *p, size_t len); sds *sdssplitargs(char *line, int *argc); +void sdssplitargs_free(sds *argv, int argc); +sds sdsmapchars(sds s, char *from, char *to, size_t setlen); + +/* Low level functions exposed to the user API */ +sds sdsMakeRoomFor(sds s, size_t addlen); +void sdsIncrLen(sds s, int incr); #endif