Feature #6244 ยป 113.patch
ext/json/fbuffer/fbuffer.h | ||
---|---|---|
#ifndef _FBUFFER_H_
|
||
#define _FBUFFER_H_
|
||
... | ... | |
static void fbuffer_free(FBuffer *fb);
|
||
static void fbuffer_clear(FBuffer *fb);
|
||
static void fbuffer_append(FBuffer *fb, const char *newstr, unsigned long len);
|
||
static void fbuffer_append_long(FBuffer *fb, long number);
|
||
static void fbuffer_append_char(FBuffer *fb, char newchr);
|
||
static FBuffer *fbuffer_dup(FBuffer *fb);
|
||
static VALUE fbuffer_to_s(FBuffer *fb);
|
||
static FBuffer *fbuffer_alloc(unsigned long initial_length)
|
||
{
|
||
... | ... | |
}
|
||
}
|
||
static void fbuffer_append_str(FBuffer *fb, VALUE str)
|
||
{
|
||
const char *newstr = StringValuePtr(str);
|
||
unsigned long len = RSTRING_LEN(str);
|
||
RB_GC_GUARD(str);
|
||
fbuffer_append(fb, newstr, len);
|
||
}
|
||
static void fbuffer_append_char(FBuffer *fb, char newchr)
|
||
{
|
||
fbuffer_inc_capa(fb, 1);
|
||
... | ... | |
return tmp - buf;
|
||
}
|
||
static void fbuffer_append_long(FBuffer *fb, long number)
|
||
{
|
||
char buf[20];
|
||
unsigned long len = fltoa(number, buf);
|
||
fbuffer_append(fb, buf, len);
|
||
}
|
||
static FBuffer *fbuffer_dup(FBuffer *fb)
|
||
{
|
||
unsigned long len = fb->len;
|
||
FBuffer *result;
|
||
assert(len > 0);
|
||
if (len > 0) {
|
||
result = fbuffer_alloc(len);
|
||
fbuffer_append(result, FBUFFER_PAIR(fb));
|
||
}
|
||
return result;
|
||
}
|
||
static VALUE fbuffer_to_s(FBuffer *fb)
|
||
{
|
||
VALUE result = rb_str_new(FBUFFER_PAIR(fb));
|
||
fbuffer_free(fb);
|
||
FORCE_UTF8(result);
|
||
return result;
|
||
}
|
||
#endif
|