X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=src%2Fstrbuffer.c;h=3496024770d9396b21a45e927c71fe83e129dfc4;hb=145032a57f7844c29f2c40415b46338ac3445207;hp=c6d412f8b9959de150267d7d0515aa17223bc8c6;hpb=55af26f05a8e4f3cd30d99c042ca136d9fcbc261;p=jansson.git diff --git a/src/strbuffer.c b/src/strbuffer.c index c6d412f..3496024 100644 --- a/src/strbuffer.c +++ b/src/strbuffer.c @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2009, 2010 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + #define _GNU_SOURCE #include #include @@ -29,7 +36,13 @@ void strbuffer_close(strbuffer_t *strbuff) strbuff->value = NULL; } -const char *strbuffer_value(strbuffer_t *strbuff) +void strbuffer_clear(strbuffer_t *strbuff) +{ + strbuff->length = 0; + strbuff->value[0] = '\0'; +} + +const char *strbuffer_value(const strbuffer_t *strbuff) { return strbuff->value; } @@ -46,6 +59,11 @@ int strbuffer_append(strbuffer_t *strbuff, const char *string) return strbuffer_append_bytes(strbuff, string, strlen(string)); } +int strbuffer_append_byte(strbuffer_t *strbuff, char byte) +{ + return strbuffer_append_bytes(strbuff, &byte, 1); +} + int strbuffer_append_bytes(strbuffer_t *strbuff, const char *data, int size) { if(strbuff->length + size >= strbuff->size) @@ -64,3 +82,14 @@ int strbuffer_append_bytes(strbuffer_t *strbuff, const char *data, int size) return 0; } + +char strbuffer_pop(strbuffer_t *strbuff) +{ + if(strbuff->length > 0) { + char c = strbuff->value[--strbuff->length]; + strbuff->value[strbuff->length] = '\0'; + return c; + } + else + return '\0'; +}