diff options
Diffstat (limited to 'src/sds.h')
-rw-r--r-- | src/sds.h | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/src/sds.h b/src/sds.h deleted file mode 100644 index 6b3a951..0000000 --- a/src/sds.h +++ /dev/null @@ -1,131 +0,0 @@ -/* SDS (Simple Dynamic Strings), A C dynamic strings library. - * - * 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 - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SDS_H -#define SDS_H - -#define SDS_MAX_PREALLOC (1024*1024) - -#include <stdarg.h> -#include <stddef.h> -#include <sys/types.h> - -typedef char *sds; - -struct sdshdr { - size_t len; - size_t free; - char buf[]; -}; - - -/** - * User API function prototypes - */ - -/// Initialization -sds sdsnew(const void *init, size_t initlen); -sds sdsdup(const sds s); -sds sdsempty(void); -sds sdsfromlonglong(long long value); - - -/// Querying -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))); -#else -sds sdscatprintf(sds s, const char *fmt, ...); -#endif - - -/// Freeing -void sdsfree(sds s); -void sdsfreesplitres(sds *tokens, size_t count); - - -/// Low-level API function prototypes -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); - - -/** - * Inline functions - */ - -static inline struct sdshdr *sdsheader(const sds s) { - /* The sdshdr pointer has a different alignment than the original char - * pointer, so cast it through a void pointer to silence the warning. */ - return (void *)(s - (sizeof (struct sdshdr))); -} - -static inline sds sdsauto(const char *s) { - return sdsnew(s, s ? strlen(s) : 0); -} - -static inline size_t sdsavail(const sds s) { - return sdsheader(s)->free; -} - -static inline size_t sdslen(const sds s) { - return sdsheader(s)->len; -} - - -#endif |