diff --git a/ds/include/blue/ds/string.h b/ds/include/blue/ds/string.h index 1d27b6a..17cbce0 100644 --- a/ds/include/blue/ds/string.h +++ b/ds/include/blue/ds/string.h @@ -81,7 +81,6 @@ static inline b_status b_string_tolower(b_string *str) { return b_string_transform(str, tolower); } -BLUE_API b_status b_string_open_stream(b_string *str, struct b_stream **out); BLUE_API b_status b_string_append_c(b_string *dest, char c); BLUE_API b_status b_string_append_wc(b_string *dest, b_wchar c); diff --git a/ds/string.c b/ds/string.c index 179e2f2..47f993a 100644 --- a/ds/string.c +++ b/ds/string.c @@ -1214,107 +1214,6 @@ static uint64_t string_hash(const struct b_string_p *str) return hash; } -/*** STREAM FUNCTIONS *********************************************************/ - -static enum b_status stream_close(struct b_stream *stream) -{ - b_string *str = stream->s_ptr0; - b_string_unref(str); - - return B_SUCCESS; -} - -static enum b_status stream_getc(struct b_stream *stream, int *out) -{ - struct b_string_p *str = stream->s_ptr1; - if (stream->s_cursor >= str->s_len) { - return B_ERR_NO_DATA; - } - - char *s = string_ptr(str); - *out = s[stream->s_cursor]; - stream->s_cursor++; - - return B_SUCCESS; -} - -static enum b_status stream_read( - struct b_stream *stream, unsigned char *buf, size_t count, size_t *nr_read) -{ - struct b_string_p *str = stream->s_ptr1; - if (stream->s_cursor >= str->s_len) { - *nr_read = 0; - return B_SUCCESS; - } - - size_t available = str->s_len - stream->s_cursor; - size_t to_read = b_min(size_t, count, available); - - char *s = string_ptr(str) + stream->s_cursor; - - memcpy(buf, s, to_read); - - *nr_read = to_read; - - return B_SUCCESS; -} - -static enum b_status stream_write( - struct b_stream *stream, const unsigned char *buf, size_t count, - size_t *nr_written) -{ - struct b_string_p *str = stream->s_ptr1; - enum b_status status = B_SUCCESS; - - if (stream->s_cursor + count > str->s_max) { - status = string_reserve(str, stream->s_cursor + count); - } - - if (!B_OK(status)) { - return status; - } - - string_insert_cstr(str, (const char *)buf, count, stream->s_cursor); - stream->s_cursor += count; - - *nr_written = count; - - return B_SUCCESS; -} - -static enum b_status stream_seek( - struct b_stream *stream, long long offset, b_stream_seek_origin origin) -{ - struct b_string_p *str = stream->s_ptr1; - - size_t abs_offset; - switch (origin) { - case B_STREAM_SEEK_START: - abs_offset = offset; - break; - case B_STREAM_SEEK_CURRENT: - abs_offset = stream->s_cursor + offset; - break; - case B_STREAM_SEEK_END: - abs_offset = str->s_len + offset; - break; - default: - return B_ERR_INVALID_ARGUMENT; - } - - stream->s_cursor = abs_offset; - - return B_SUCCESS; -} - -static enum b_status stream_reserve(struct b_stream *stream, size_t len) -{ - struct b_string_p *str = stream->s_ptr1; - - size_t new_capacity = str->s_len + len; - return string_reserve(str, new_capacity); -} - /*** PUBLIC FUNCTIONS *********************************************************/ b_string *b_string_create_from_cstr(const char *s) @@ -1539,31 +1438,6 @@ uint64_t b_string_hash(const b_string *str) B_CLASS_DISPATCH_STATIC_0(B_TYPE_STRING, string_hash, str); } -enum b_status b_string_open_stream(b_string *str, struct b_stream **out) -{ - struct b_stream *stream = malloc(sizeof *stream); - if (!stream) { - return B_ERR_NO_MEMORY; - } - - memset(stream, 0x0, sizeof *stream); - - stream->s_mode |= B_STREAM_READ | B_STREAM_WRITE; - - stream->s_ptr0 = b_string_ref(str); - stream->s_ptr1 = b_object_get_private(str, B_TYPE_STRING); - stream->s_close = stream_close; - stream->s_getc = stream_getc; - stream->s_read = stream_read; - stream->s_write = stream_write; - stream->s_seek = stream_seek; - stream->s_reserve = stream_reserve; - - *out = stream; - - return B_SUCCESS; -} - /*** PUBLIC ALIAS FUNCTIONS ***************************************************/ enum b_status b_string_append_c(b_string *dest, char c) @@ -1635,7 +1509,7 @@ static void string_fini(b_object *obj, void *priv) } } -static void string_to_string(const b_object *obj, struct b_stream *out) +static void string_to_string(const b_object *obj, b_stream *out) { struct b_string_p *str = b_object_get_private(obj, B_TYPE_STRING); const char *s = string_ptr(str);