class Hash
def ffi_yajl(yajl_gen, state)
def ffi_yajl(yajl_gen, state) if state[:processing_key] str = self.to_s if ( status = FFI_Yajl.yajl_gen_string(yajl_gen, str, str.bytesize) ) != 0 FFI_Yajl::Encoder.raise_error_for_status(status) end else if ( status = FFI_Yajl.yajl_gen_map_open(yajl_gen) ) != 0 FFI_Yajl::Encoder.raise_error_for_status(status) end self.each do |key, value| # Perf Fix: mutate state hash rather than creating new copy state[:processing_key] = true key.ffi_yajl(yajl_gen, state) state[:processing_key] = false value.ffi_yajl(yajl_gen, state) end if ( status = FFI_Yajl.yajl_gen_map_close(yajl_gen) ) != 0 FFI_Yajl::Encoder.raise_error_for_status(status) end end end