diff options
Diffstat (limited to 'src/text.h')
-rw-r--r-- | src/text.h | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/src/text.h b/src/text.h deleted file mode 100644 index 0e65e18..0000000 --- a/src/text.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef TEXT_H -#define TEXT_H - -#include <string.h> - -typedef struct -{ - goffset offset; - gsize frame_len; - gsize len; - gchar *body; -} Text; - -inline Text* -text_new(const gchar *src) -{ - if (!src) - return NULL; - - gsize len = strlen(src); - - Text *out = (Text*)g_malloc(sizeof(Text) + len + 1); - gchar *body = (gchar*)out + sizeof(Text); - - out->offset = 0; - out->frame_len = len; - out->len = len; - out->body = body; - - memcpy(body, src, len + 1); - - GST_DEBUG("[%p] len=%ld", out, len); - - return out; -} - -inline void -text_chunk(Text *src, Text *dst, gsize len) -{ - memcpy(dst, src, sizeof(Text)); - - gsize dst_len = MIN(len, src->frame_len); - gchar *dst_last = dst->body + dst->offset + dst_len; - gchar *i; - - if (dst_len < src->frame_len) - for (i = dst_last; dst_len; --dst_len, --i) - if (g_ascii_isspace(*i)) - break; - - if (dst_len) - dst->frame_len = dst_len; - else - { - dst_last = g_utf8_prev_char(dst_last + 1); - dst->frame_len = dst_last - (dst->body + dst->offset); - } - - src->offset += dst->frame_len; - src->frame_len -= dst->frame_len; - - GST_DEBUG("[%p] dst_len=%ld dst_last=%ld " - "src->offset=%ld src->frame_len=%ld dst->body=%s", src, dst_len, - dst_last-dst->body, src->offset, src->frame_len, - dst->body + dst->offset); -} - -inline gchar* -text_first(Text *self) -{ - return self->body + self->offset; -} - -inline gchar* -text_last(Text *self) -{ - return text_first(self) + self->frame_len; -} - -inline gboolean -text_eot(Text *self) -{ - return self->frame_len == 0; -} - -inline void -text_unref(Text *self) -{ - if (text_eot(self)) - return; - - gpointer data = NULL; - - if (self->offset + self->frame_len >= self->len) - data = self->body - sizeof(Text); - - memset(self, 0, sizeof(Text)); - - GST_DEBUG("[%p]", data); - - g_free(data); -} - -inline gsize -text_len(Text *self) -{ - return self->frame_len; -} - -#endif |