Add EINA_MAGIC to strbuf

SVN revision: 45651
This commit is contained in:
Sebastian Dransfeld 2010-01-27 20:48:27 +00:00
parent 436249c412
commit c6ca24216c
3 changed files with 48 additions and 1 deletions

View File

@ -80,6 +80,7 @@
#define EINA_MAGIC_MATRIXSPARSE_CELL_ITERATOR 0x98761248
#define EINA_MAGIC_MATRIXSPARSE_CELL_ACCESSOR 0x98761249
#define EINA_MAGIC_STRBUF 0x98761250
/* undef the following, we want out version */

View File

@ -96,6 +96,7 @@ S(convert);
S(counter);
S(benchmark);
S(rectangle);
S(strbuf);
#undef S
struct eina_desc_setup
@ -122,7 +123,8 @@ static const struct eina_desc_setup _eina_desc_setup[] = {
S(convert),
S(counter),
S(benchmark),
S(rectangle)
S(rectangle),
S(strbuf)
#undef S
};
static const size_t _eina_desc_setup_len = sizeof(_eina_desc_setup) / sizeof(_eina_desc_setup[0]);

View File

@ -7,12 +7,25 @@
# include "config.h"
#endif
#include "eina_private.h"
#include "eina_str.h"
#include "eina_strbuf.h"
#include "eina_magic.h"
#include <stdlib.h>
#include <string.h>
static const char EINA_MAGIC_STRBUF_STR[] = "Eina Strbuf";
#define EINA_MAGIC_CHECK_STRBUF(d, ...) \
do { \
if (!EINA_MAGIC_CHECK((d), EINA_MAGIC_STRBUF)) \
{ \
EINA_MAGIC_FAIL((d), EINA_MAGIC_STRBUF); \
return __VA_ARGS__; \
} \
} while (0);
#define EINA_STRBUF_INIT_SIZE 32
#define EINA_STRBUF_INIT_STEP 32
#define EINA_STRBUF_MAX_STEP 4096
@ -23,10 +36,25 @@ struct _Eina_Strbuf
size_t len;
size_t size;
size_t step;
EINA_MAGIC
};
static int _eina_strbuf_resize(Eina_Strbuf *buf, size_t size);
Eina_Bool
eina_strbuf_init(void)
{
eina_magic_string_static_set(EINA_MAGIC_STRBUF, EINA_MAGIC_STRBUF_STR);
return EINA_TRUE;
}
Eina_Bool
eina_strbuf_shutdown(void)
{
return EINA_TRUE;
}
/**
* Create a new string buffer
*/
@ -37,6 +65,7 @@ eina_strbuf_new(void)
buf = malloc(sizeof(Eina_Strbuf));
if (!buf) return NULL;
EINA_MAGIC_SET(buf, EINA_MAGIC_STRBUF);
buf->len = 0;
buf->size = EINA_STRBUF_INIT_SIZE;
@ -55,6 +84,7 @@ eina_strbuf_new(void)
EAPI void
eina_strbuf_free(Eina_Strbuf *buf)
{
EINA_MAGIC_CHECK_STRBUF(buf);
free(buf->buf);
free(buf);
}
@ -70,6 +100,8 @@ eina_strbuf_append(Eina_Strbuf *buf, const char *str)
size_t l;
size_t off = 0;
EINA_MAGIC_CHECK_STRBUF(buf);
l = eina_strlcpy(buf->buf + buf->len, str, buf->size - buf->len);
while (l > buf->size - buf->len)
@ -99,6 +131,8 @@ eina_strbuf_insert(Eina_Strbuf *buf, const char *str, size_t pos)
{
size_t len;
EINA_MAGIC_CHECK_STRBUF(buf);
if (pos >= buf->len)
{
eina_strbuf_append(buf, str);
@ -127,6 +161,8 @@ eina_strbuf_insert(Eina_Strbuf *buf, const char *str, size_t pos)
EAPI void
eina_strbuf_append_char(Eina_Strbuf *buf, char c)
{
EINA_MAGIC_CHECK_STRBUF(buf);
if (buf->len >= buf->size - 1)
{
buf->size += buf->step;
@ -149,6 +185,8 @@ eina_strbuf_append_char(Eina_Strbuf *buf, char c)
EAPI const char *
eina_strbuf_string_get(Eina_Strbuf *buf)
{
EINA_MAGIC_CHECK_STRBUF(buf, NULL);
return buf->buf;
}
@ -159,6 +197,8 @@ eina_strbuf_string_get(Eina_Strbuf *buf)
EAPI size_t
eina_strbuf_length_get(Eina_Strbuf *buf)
{
EINA_MAGIC_CHECK_STRBUF(buf, 0);
return buf->len;
}
@ -175,6 +215,8 @@ EAPI int
eina_strbuf_replace(Eina_Strbuf *buf, const char *str, const char *with,
unsigned int n)
{
EINA_MAGIC_CHECK_STRBUF(buf, 0);
size_t len1, len2;
char *spos;
size_t pos;
@ -222,6 +264,8 @@ eina_strbuf_replace(Eina_Strbuf *buf, const char *str, const char *with,
EAPI int
eina_strbuf_replace_all(Eina_Strbuf *buf, const char *str, const char *with)
{
EINA_MAGIC_CHECK_STRBUF(buf, 0);
size_t len1, len2, len;
char *tmp_buf = NULL;
char *spos;