Functions | Variables

ext/json/generator/generator.c File Reference

#include "generator.h"
Include dependency graph for generator.c:

Go to the source code of this file.

Functions

static unsigned char isLegalUTF8 (const UTF8 *source, int length)
static void unicode_escape (char *buf, UTF16 character)
static void unicode_escape_to_buffer (FBuffer *buffer, char buf[6], UTF16 character)
static void convert_UTF8_to_JSON_ASCII (FBuffer *buffer, VALUE string)
static void convert_UTF8_to_JSON (FBuffer *buffer, VALUE string)
static char * fstrndup (const char *ptr, int len)
static FBufferfbuffer_alloc ()
static FBufferfbuffer_alloc_with_length (unsigned int initial_length)
static void fbuffer_free (FBuffer *fb)
static void fbuffer_free_only_buffer (FBuffer *fb)
static void fbuffer_clear (FBuffer *fb)
static void fbuffer_inc_capa (FBuffer *fb, unsigned int requested)
static void fbuffer_append (FBuffer *fb, const char *newstr, unsigned int len)
static void fbuffer_append_char (FBuffer *fb, char newchr)
static void freverse (char *start, char *end)
static int fltoa (long number, char *buf)
static void fbuffer_append_long (FBuffer *fb, long number)
static FBufferfbuffer_dup (FBuffer *fb)
static VALUE mHash_to_json (int argc, VALUE *argv, VALUE self)
static VALUE mArray_to_json (int argc, VALUE *argv, VALUE self)
static VALUE mInteger_to_json (int argc, VALUE *argv, VALUE self)
static VALUE mFloat_to_json (int argc, VALUE *argv, VALUE self)
static VALUE mString_included_s (VALUE self, VALUE modul)
static VALUE mString_to_json (int argc, VALUE *argv, VALUE self)
static VALUE mString_to_json_raw_object (VALUE self)
static VALUE mString_to_json_raw (int argc, VALUE *argv, VALUE self)
static VALUE mString_Extend_json_create (VALUE self, VALUE o)
static VALUE mTrueClass_to_json (int argc, VALUE *argv, VALUE self)
static VALUE mFalseClass_to_json (int argc, VALUE *argv, VALUE self)
static VALUE mNilClass_to_json (int argc, VALUE *argv, VALUE self)
static VALUE mObject_to_json (int argc, VALUE *argv, VALUE self)
static void State_free (JSON_Generator_State *state)
static JSON_Generator_StateState_allocate ()
static VALUE cState_s_allocate (VALUE klass)
static VALUE cState_configure (VALUE self, VALUE opts)
static VALUE cState_to_h (VALUE self)
static VALUE cState_aref (VALUE self, VALUE name)
static void generate_json (FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj, long depth)
static VALUE cState_partial_generate (VALUE self, VALUE obj, VALUE depth)
static VALUE cState_generate (VALUE self, VALUE obj)
static VALUE cState_initialize (int argc, VALUE *argv, VALUE self)
static VALUE cState_init_copy (VALUE obj, VALUE orig)
static VALUE cState_from_state_s (VALUE self, VALUE opts)
static VALUE cState_indent (VALUE self)
static VALUE cState_indent_set (VALUE self, VALUE indent)
static VALUE cState_space (VALUE self)
static VALUE cState_space_set (VALUE self, VALUE space)
static VALUE cState_space_before (VALUE self)
static VALUE cState_space_before_set (VALUE self, VALUE space_before)
static VALUE cState_object_nl (VALUE self)
static VALUE cState_object_nl_set (VALUE self, VALUE object_nl)
static VALUE cState_array_nl (VALUE self)
static VALUE cState_array_nl_set (VALUE self, VALUE array_nl)
static VALUE cState_check_circular_p (VALUE self)
static VALUE cState_max_nesting (VALUE self)
static VALUE cState_max_nesting_set (VALUE self, VALUE depth)
static VALUE cState_allow_nan_p (VALUE self)
static VALUE cState_ascii_only_p (VALUE self)
void Init_generator ()

Variables

static VALUE mJSON
static VALUE mExt
static VALUE mGenerator
static VALUE cState
static VALUE mGeneratorMethods
static VALUE mObject
static VALUE mHash
static VALUE mArray
static VALUE mInteger
static VALUE mFloat
static VALUE mString
static VALUE mString_Extend
static VALUE mTrueClass
static VALUE mFalseClass
static VALUE mNilClass
static VALUE eGeneratorError
static VALUE eNestingError
static VALUE CRegexp_MULTILINE
static VALUE CJSON_SAFE_STATE_PROTOTYPE
static ID i_to_s
static ID i_to_json
static ID i_new
static ID i_indent
static ID i_space
static ID i_space_before
static ID i_object_nl
static ID i_array_nl
static ID i_max_nesting
static ID i_allow_nan
static ID i_ascii_only
static ID i_pack
static ID i_unpack
static ID i_create_id
static ID i_extend
static ID i_key_p
static ID i_aref
static ID i_send
static ID i_respond_to_p
static ID i_match
static const char trailingBytesForUTF8 [256]
static const UTF32 offsetsFromUTF8 [6]

Function Documentation

static void convert_UTF8_to_JSON ( FBuffer buffer,
VALUE  string 
) [static]

Definition at line 222 of file generator.c.

References buf, fbuffer_append(), len, RSTRING_LEN, RSTRING_PTR, and unicode_escape().

Referenced by generate_json().

static void convert_UTF8_to_JSON_ASCII ( FBuffer buffer,
VALUE  string 
) [static]
static VALUE cState_allow_nan_p ( VALUE  self  )  [static]

Definition at line 1231 of file generator.c.

References GET_STATE, and Qtrue.

Referenced by Init_generator().

static VALUE cState_aref ( VALUE  self,
VALUE  name 
) [static]

Definition at line 728 of file generator.c.

References GET_STATE, i_respond_to_p, i_send, rb_funcall(), and RTEST.

Referenced by Init_generator().

static VALUE cState_array_nl ( VALUE  self  )  [static]

Definition at line 1160 of file generator.c.

References GET_STATE, and rb_str_new2().

Referenced by Init_generator().

static VALUE cState_array_nl_set ( VALUE  self,
VALUE  array_nl 
) [static]

Definition at line 1171 of file generator.c.

References Check_Type, GET_STATE, RSTRING_LEN, RSTRING_PTR, ruby_xfree(), strdup, and T_STRING.

Referenced by Init_generator().

static VALUE cState_ascii_only_p ( VALUE  self  )  [static]

Definition at line 1243 of file generator.c.

References GET_STATE, and Qtrue.

Referenced by Init_generator().

static VALUE cState_check_circular_p ( VALUE  self  )  [static]

Definition at line 1194 of file generator.c.

References GET_STATE, and Qtrue.

Referenced by Init_generator().

static VALUE cState_configure ( VALUE  self,
VALUE  opts 
) [static]
static VALUE cState_from_state_s ( VALUE  self,
VALUE  opts 
) [static]
static VALUE cState_generate ( VALUE  self,
VALUE  obj 
) [static]
static VALUE cState_indent ( VALUE  self  )  [static]

Definition at line 1028 of file generator.c.

References GET_STATE, and rb_str_new2().

Referenced by Init_generator().

static VALUE cState_indent_set ( VALUE  self,
VALUE  indent 
) [static]

Definition at line 1039 of file generator.c.

References Check_Type, GET_STATE, RSTRING_LEN, RSTRING_PTR, ruby_xfree(), strdup, and T_STRING.

Referenced by Init_generator().

static VALUE cState_init_copy ( VALUE  obj,
VALUE  orig 
) [static]
static VALUE cState_initialize ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 965 of file generator.c.

References cState_configure(), GET_STATE, MEMZERO, NIL_P, and rb_scan_args().

Referenced by Init_generator().

static VALUE cState_max_nesting ( VALUE  self  )  [static]

Definition at line 1206 of file generator.c.

References GET_STATE, and LONG2FIX.

Referenced by Init_generator().

static VALUE cState_max_nesting_set ( VALUE  self,
VALUE  depth 
) [static]

Definition at line 1218 of file generator.c.

References Check_Type, FIX2LONG, GET_STATE, and T_FIXNUM.

Referenced by Init_generator().

static VALUE cState_object_nl ( VALUE  self  )  [static]

Definition at line 1127 of file generator.c.

References GET_STATE, and rb_str_new2().

Referenced by Init_generator().

static VALUE cState_object_nl_set ( VALUE  self,
VALUE  object_nl 
) [static]

Definition at line 1139 of file generator.c.

References Check_Type, GET_STATE, RSTRING_LEN, RSTRING_PTR, ruby_xfree(), strdup, and T_STRING.

Referenced by Init_generator().

static VALUE cState_partial_generate ( VALUE  self,
VALUE  obj,
VALUE  depth 
) [static]
static VALUE cState_s_allocate ( VALUE  klass  )  [static]

Definition at line 622 of file generator.c.

References Data_Wrap_Struct, NULL, State_allocate(), and State_free().

Referenced by Init_generator().

static VALUE cState_space ( VALUE  self  )  [static]

Definition at line 1061 of file generator.c.

References GET_STATE, and rb_str_new2().

Referenced by Init_generator().

static VALUE cState_space_before ( VALUE  self  )  [static]

Definition at line 1094 of file generator.c.

References GET_STATE, and rb_str_new2().

Referenced by Init_generator().

static VALUE cState_space_before_set ( VALUE  self,
VALUE  space_before 
) [static]

Definition at line 1105 of file generator.c.

References Check_Type, GET_STATE, RSTRING_LEN, RSTRING_PTR, ruby_xfree(), strdup, and T_STRING.

Referenced by Init_generator().

static VALUE cState_space_set ( VALUE  self,
VALUE  space 
) [static]

Definition at line 1073 of file generator.c.

References Check_Type, GET_STATE, RSTRING_LEN, RSTRING_PTR, ruby_xfree(), strdup, and T_STRING.

Referenced by Init_generator().

static VALUE cState_to_h ( VALUE  self  )  [static]
static FBuffer* fbuffer_alloc (  )  [static]

Definition at line 296 of file generator.c.

References ALLOC.

Referenced by cState_partial_generate(), and fbuffer_dup().

static FBuffer* fbuffer_alloc_with_length ( unsigned int  initial_length  )  [static]

Definition at line 304 of file generator.c.

References ALLOC, and assert.

Referenced by cState_partial_generate(), and fbuffer_dup().

static void fbuffer_append ( FBuffer fb,
const char *  newstr,
unsigned int  len 
) [static]
static void fbuffer_append_char ( FBuffer fb,
char  newchr 
) [static]
static void fbuffer_append_long ( FBuffer fb,
long  number 
) [static]

Definition at line 385 of file generator.c.

References buf, fbuffer_append(), fltoa(), and len.

Referenced by generate_json().

static void fbuffer_clear ( FBuffer fb  )  [static]

Definition at line 325 of file generator.c.

References FBufferStruct::len.

Referenced by cState_partial_generate().

static FBuffer* fbuffer_dup ( FBuffer fb  )  [static]
static void fbuffer_free ( FBuffer fb  )  [static]

Definition at line 314 of file generator.c.

References FBufferStruct::ptr, and ruby_xfree().

Referenced by cState_partial_generate(), generate_json(), and State_free().

static void fbuffer_free_only_buffer ( FBuffer fb  )  [static]

Definition at line 320 of file generator.c.

References ruby_xfree().

static void fbuffer_inc_capa ( FBuffer fb,
unsigned int  requested 
) [static]
static int fltoa ( long  number,
char *  buf 
) [static]

Definition at line 372 of file generator.c.

References freverse().

Referenced by fbuffer_append_long().

static void freverse ( char *  start,
char *  end 
) [static]

Definition at line 363 of file generator.c.

Referenced by fltoa().

static char* fstrndup ( const char *  ptr,
int  len 
) [static]

Definition at line 286 of file generator.c.

References ALLOC_N, and result.

Referenced by cState_configure(), and cState_init_copy().

static void generate_json ( FBuffer buffer,
VALUE  Vstate,
JSON_Generator_State state,
VALUE  obj,
long  depth 
) [static]
void Init_generator (  ) 

Definition at line 1252 of file generator.c.

References CJSON_SAFE_STATE_PROTOTYPE, CRegexp_MULTILINE, cState, cState_allow_nan_p(), cState_aref(), cState_array_nl(), cState_array_nl_set(), cState_ascii_only_p(), cState_check_circular_p(), cState_configure(), cState_from_state_s(), cState_generate(), cState_indent(), cState_indent_set(), cState_init_copy(), cState_initialize(), cState_max_nesting(), cState_max_nesting_set(), cState_object_nl(), cState_object_nl_set(), cState_partial_generate(), cState_s_allocate(), cState_space(), cState_space_before(), cState_space_before_set(), cState_space_set(), cState_to_h(), eGeneratorError, eNestingError, i_allow_nan, i_aref, i_array_nl, i_ascii_only, i_create_id, i_extend, i_indent, i_key_p, i_match, i_max_nesting, i_new, i_object_nl, i_pack, i_respond_to_p, i_send, i_space, i_space_before, i_to_json, i_to_s, i_unpack, mArray, mArray_to_json(), mExt, mFalseClass, mFalseClass_to_json(), mFloat, mFloat_to_json(), mGenerator, mGeneratorMethods, mHash, mHash_to_json(), mInteger, mInteger_to_json(), mJSON, mNilClass, mNilClass_to_json(), mObject, mObject_to_json(), mString, mString_Extend, mString_Extend_json_create(), mString_included_s(), mString_to_json(), mString_to_json_raw(), mString_to_json_raw_object(), mTrueClass, mTrueClass_to_json(), rb_cObject, rb_const_get(), rb_cRegexp, rb_define_alloc_func(), rb_define_class_under(), rb_define_method(), rb_define_module(), rb_define_module_under(), rb_define_singleton_method(), rb_funcall(), rb_intern, rb_path2class(), rb_require(), and rb_str_new2().

static unsigned char isLegalUTF8 ( const UTF8 source,
int  length 
) [static]

Definition at line 76 of file generator.c.

Referenced by convert_UTF8_to_JSON_ASCII().

static VALUE mArray_to_json ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 445 of file generator.c.

References cState, cState_from_state_s(), cState_partial_generate(), and rb_scan_args().

Referenced by Init_generator().

static VALUE mFalseClass_to_json ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 566 of file generator.c.

References cState, cState_from_state_s(), cState_partial_generate(), and rb_scan_args().

Referenced by Init_generator().

static VALUE mFloat_to_json ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 470 of file generator.c.

References cState, cState_from_state_s(), cState_partial_generate(), and rb_scan_args().

Referenced by Init_generator().

static VALUE mHash_to_json ( int  argc,
VALUE argv,
VALUE  self 
) [static]
static VALUE mInteger_to_json ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 457 of file generator.c.

References cState, cState_from_state_s(), cState_partial_generate(), and rb_scan_args().

Referenced by Init_generator().

static VALUE mNilClass_to_json ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 578 of file generator.c.

References cState, cState_from_state_s(), cState_partial_generate(), and rb_scan_args().

Referenced by Init_generator().

static VALUE mObject_to_json ( int  argc,
VALUE argv,
VALUE  self 
) [static]
static VALUE mString_Extend_json_create ( VALUE  self,
VALUE  o 
) [static]

Definition at line 540 of file generator.c.

References Check_Type, i_pack, rb_funcall(), rb_hash_aref(), rb_str_new2(), and T_HASH.

Referenced by Init_generator().

static VALUE mString_included_s ( VALUE  self,
VALUE  modul 
) [static]

Definition at line 483 of file generator.c.

References i_extend, mString_Extend, rb_funcall(), and result.

Referenced by Init_generator().

static VALUE mString_to_json ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 495 of file generator.c.

References cState, cState_from_state_s(), cState_partial_generate(), and rb_scan_args().

Referenced by Init_generator().

static VALUE mString_to_json_raw ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 527 of file generator.c.

References Check_Type, mHash_to_json(), mString_to_json_raw_object(), and T_HASH.

Referenced by Init_generator().

static VALUE mString_to_json_raw_object ( VALUE  self  )  [static]
static VALUE mTrueClass_to_json ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 553 of file generator.c.

References cState, cState_from_state_s(), cState_partial_generate(), and rb_scan_args().

Referenced by Init_generator().

static JSON_Generator_State* State_allocate (  )  [static]

Definition at line 616 of file generator.c.

References ALLOC.

Referenced by cState_s_allocate().

static void State_free ( JSON_Generator_State state  )  [static]
static void unicode_escape ( char *  buf,
UTF16  character 
) [static]

Definition at line 103 of file generator.c.

Referenced by convert_UTF8_to_JSON(), and unicode_escape_to_buffer().

static void unicode_escape_to_buffer ( FBuffer buffer,
char  buf[6],
UTF16  character 
) [static]

Definition at line 115 of file generator.c.

References fbuffer_append(), and unicode_escape().

Referenced by convert_UTF8_to_JSON_ASCII().


Variable Documentation

Definition at line 8 of file generator.c.

Referenced by cState_from_state_s(), and Init_generator().

Definition at line 8 of file generator.c.

Referenced by cState_generate(), and Init_generator().

VALUE cState [static]

Definition at line 8 of file generator.c.

Referenced by cState_generate(), generate_json(), and Init_generator().

VALUE eNestingError [static]

Definition at line 8 of file generator.c.

Referenced by generate_json(), and Init_generator().

ID i_allow_nan [static]

Definition at line 13 of file generator.c.

Referenced by cState_configure(), cState_to_h(), and Init_generator().

ID i_aref [static]

Definition at line 13 of file generator.c.

Referenced by Init_generator().

ID i_array_nl [static]

Definition at line 13 of file generator.c.

Referenced by cState_configure(), cState_to_h(), and Init_generator().

ID i_ascii_only [static]

Definition at line 13 of file generator.c.

Referenced by cState_configure(), cState_to_h(), and Init_generator().

ID i_create_id [static]

Definition at line 13 of file generator.c.

Referenced by Init_generator(), and mString_to_json_raw_object().

ID i_extend [static]

Definition at line 13 of file generator.c.

Referenced by Init_generator(), and mString_included_s().

ID i_indent [static]

Definition at line 13 of file generator.c.

Referenced by cState_configure(), cState_to_h(), and Init_generator().

ID i_key_p [static]

Definition at line 13 of file generator.c.

Referenced by Init_generator().

ID i_match [static]

Definition at line 13 of file generator.c.

Referenced by cState_generate(), and Init_generator().

ID i_max_nesting [static]

Definition at line 13 of file generator.c.

Referenced by cState_configure(), cState_to_h(), and Init_generator().

ID i_new [static]

Definition at line 13 of file generator.c.

Referenced by cState_from_state_s(), and Init_generator().

ID i_object_nl [static]

Definition at line 13 of file generator.c.

Referenced by cState_configure(), cState_to_h(), and Init_generator().

ID i_pack [static]

Definition at line 13 of file generator.c.

Referenced by Init_generator(), and mString_Extend_json_create().

ID i_respond_to_p [static]

Definition at line 13 of file generator.c.

Referenced by cState_aref(), and Init_generator().

ID i_send [static]

Definition at line 13 of file generator.c.

Referenced by cState_aref(), and Init_generator().

ID i_space [static]

Definition at line 13 of file generator.c.

Referenced by cState_configure(), cState_to_h(), and Init_generator().

ID i_space_before [static]

Definition at line 13 of file generator.c.

Referenced by cState_configure(), cState_to_h(), and Init_generator().

ID i_to_json [static]

Definition at line 13 of file generator.c.

Referenced by generate_json(), and Init_generator().

ID i_to_s [static]

Definition at line 13 of file generator.c.

Referenced by generate_json(), Init_generator(), and mObject_to_json().

ID i_unpack [static]

Definition at line 13 of file generator.c.

Referenced by Init_generator(), and mString_to_json_raw_object().

VALUE mArray [static]

Definition at line 8 of file generator.c.

Referenced by Init_generator().

VALUE mExt [static]

Definition at line 8 of file generator.c.

Referenced by Init_generator().

VALUE mFalseClass [static]

Definition at line 8 of file generator.c.

Referenced by Init_generator().

VALUE mFloat [static]

Definition at line 8 of file generator.c.

Referenced by Init_generator().

VALUE mGenerator [static]

Definition at line 8 of file generator.c.

Referenced by Init_generator().

Definition at line 8 of file generator.c.

Referenced by Init_generator().

VALUE mHash [static]

Definition at line 8 of file generator.c.

Referenced by Init_generator().

VALUE mInteger [static]

Definition at line 8 of file generator.c.

Referenced by Init_generator().

VALUE mJSON [static]

Definition at line 8 of file generator.c.

Referenced by cState_from_state_s(), Init_generator(), and mString_to_json_raw_object().

VALUE mNilClass [static]

Definition at line 8 of file generator.c.

Referenced by Init_generator().

VALUE mObject [static]

Definition at line 8 of file generator.c.

Referenced by Init_generator().

VALUE mString [static]

Definition at line 8 of file generator.c.

Referenced by Init_generator().

Definition at line 8 of file generator.c.

Referenced by Init_generator(), and mString_included_s().

VALUE mTrueClass [static]

Definition at line 8 of file generator.c.

Referenced by Init_generator().

const UTF32 offsetsFromUTF8[6] [static]
Initial value:
 { 0x00000000UL, 0x00003080UL, 0x000E2080UL,
                     0x03C82080UL, 0xFA082080UL, 0x82082080UL }

Definition at line 63 of file generator.c.

Referenced by convert_UTF8_to_JSON_ASCII().

const char trailingBytesForUTF8[256] [static]
Initial value:
 {
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
}

Definition at line 47 of file generator.c.

Referenced by convert_UTF8_to_JSON_ASCII().