diff options
| author | antirez <antirez@gmail.com> | 2014-04-08 21:18:10 -0400 | 
|---|---|---|
| committer | Matt Stancliff <matt@genges.com> | 2014-04-09 17:02:42 -0400 | 
| commit | 334525359acb3889c7a98b3c92fbb9b1e311a019 (patch) | |
| tree | 2ca8c24fbbfb115fd725c381874ac5f0ad1da146 /sds.h | |
| parent | 4441fa3513e8b7bcd95d6b03dc56e0d538f264ca (diff) | |
| download | hiredict-334525359acb3889c7a98b3c92fbb9b1e311a019.tar.xz | |
Upgrade sds to latest version
SDS is now broken out of Redis into its own project, so include
the latest version from the SDS repo.
This is a backport of the Redis commit doing the same to the bundled hiredis:
https://github.com/antirez/redis/commit/320fa02b9b48ee1c63d88db6344fc0d328e24853
Diffstat (limited to 'sds.h')
| -rw-r--r-- | sds.h | 39 | 
1 files changed, 26 insertions, 13 deletions
| @@ -1,6 +1,6 @@ -/* SDSLib, A C dynamic strings library +/* SDS (Simple Dynamic Strings), A C dynamic strings library.   * - * Copyright (c) 2006-2010, Salvatore Sanfilippo <antirez at gmail dot com> + * Copyright (c) 2006-2014, Salvatore Sanfilippo <antirez at gmail dot com>   * All rights reserved.   *   * Redistribution and use in source and binary forms, with or without @@ -31,6 +31,8 @@  #ifndef __SDS_H  #define __SDS_H +#define SDS_MAX_PREALLOC (1024*1024) +  #include <sys/types.h>  #include <stdarg.h> @@ -43,12 +45,12 @@ struct sdshdr {  };  static inline size_t sdslen(const sds s) { -    struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr))); +    struct sdshdr *sh = (void*)(s-sizeof *sh);      return sh->len;  }  static inline size_t sdsavail(const sds s) { -    struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr))); +    struct sdshdr *sh = (void*)(s-sizeof *sh);      return sh->free;  } @@ -58,12 +60,13 @@ sds sdsempty(void);  size_t sdslen(const sds s);  sds sdsdup(const sds s);  void sdsfree(sds s); -size_t sdsavail(sds s); +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 sdscpylen(sds s, char *t, size_t len); -sds sdscpy(sds s, 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);  #ifdef __GNUC__ @@ -73,16 +76,26 @@ sds sdscatprintf(sds s, const char *fmt, ...)  sds sdscatprintf(sds s, const char *fmt, ...);  #endif -sds sdstrim(sds s, const char *cset); -sds sdsrange(sds s, int start, int end); +void sdstrim(sds s, const char *cset); +void sdsrange(sds s, int start, int end);  void sdsupdatelen(sds s); -int sdscmp(sds s1, sds s2); -sds *sdssplitlen(char *s, int len, char *sep, int seplen, int *count); +void sdsclear(sds s); +int sdscmp(const sds s1, const sds s2); +sds *sdssplitlen(const char *s, int len, const char *sep, int seplen, int *count);  void sdsfreesplitres(sds *tokens, int count);  void sdstolower(sds s);  void sdstoupper(sds s);  sds sdsfromlonglong(long long value); -sds sdscatrepr(sds s, char *p, size_t len); -sds *sdssplitargs(char *line, int *argc); +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, int incr); +sds sdsRemoveFreeSpace(sds s); +size_t sdsAllocSize(sds s);  #endif | 
