yajl_gen.h File Reference
`#include <yajl/yajl_common.h>`
`#include <stddef.h>`

Go to the source code of this file.

## Typedefs

typedef struct yajl_gen_t * | yajl_gen
typedef void(* | yajl_print_t) (void *ctx, const char *str, size_t len)

## Enumerations

enum | yajl_gen_status { yajl_gen_status_ok = 0 , yajl_gen_keys_must_be_strings , yajl_max_depth_exceeded , yajl_gen_in_error_state , yajl_gen_generation_complete , yajl_gen_invalid_number , yajl_gen_no_buf , yajl_gen_invalid_string }
enum | yajl_gen_option { yajl_gen_beautify = 0x01 , yajl_gen_indent_string = 0x02 , yajl_gen_print_callback = 0x04 , yajl_gen_validate_utf8 = 0x08 , yajl_gen_escape_solidus = 0x10 }

## Functions

YAJL_API int | yajl_gen_config (yajl_gen g, yajl_gen_option opt,...)
YAJL_API yajl_gen | yajl_gen_alloc (const yajl_alloc_funcs *allocFuncs)
YAJL_API void | yajl_gen_free (yajl_gen handle)
YAJL_API yajl_gen_status | yajl_gen_integer (yajl_gen hand, long long int number)
YAJL_API yajl_gen_status | yajl_gen_double (yajl_gen hand, double number)
YAJL_API yajl_gen_status | yajl_gen_number (yajl_gen hand, const char *num, size_t len)
YAJL_API yajl_gen_status | yajl_gen_string (yajl_gen hand, const unsigned char *str, size_t len)
YAJL_API yajl_gen_status | yajl_gen_null (yajl_gen hand)
YAJL_API yajl_gen_status | yajl_gen_bool (yajl_gen hand, int boolean)
YAJL_API yajl_gen_status | yajl_gen_map_open (yajl_gen hand)
YAJL_API yajl_gen_status | yajl_gen_map_close (yajl_gen hand)
YAJL_API yajl_gen_status | yajl_gen_array_open (yajl_gen hand)
YAJL_API yajl_gen_status | yajl_gen_array_close (yajl_gen hand)
YAJL_API yajl_gen_status | yajl_gen_get_buf (yajl_gen hand, const unsigned char **buf, size_t *len)
YAJL_API void | yajl_gen_clear (yajl_gen hand)
YAJL_API void | yajl_gen_reset (yajl_gen hand, const char *sep)

## Detailed Description

Interface to YAJL's JSON generation facilities.

## Typedef Documentation

## yajl_gen

typedef struct yajl_gen_t* yajl_gen

an opaque handle to a generator

## yajl_print_t

typedef void(* yajl_print_t) (void *ctx, const char *str, size_t len)

a callback used for "printing" the results.

## Enumeration Type Documentation

## yajl_gen_option

enum yajl_gen_option

configuration parameters for the parser, these may be passed to yajl_gen_config() along with option specific argument(s). In general, all configuration parameters default to off.

Enumerator
yajl_gen_beautify | generate indented (beautiful) output
yajl_gen_indent_string | Set an indent string which is used when yajl_gen_beautify is enabled. Maybe something like \t or some number of spaces. The default is four spaces ' '.
yajl_gen_print_callback | Set a function and context argument that should be used to output generated json. the function should conform to the yajl_print_t prototype while the context argument is a void * of your choosing. example: yajl_gen_config(g, yajl_gen_print_callback, myFunc, myVoidPtr);
yajl_gen_validate_utf8 | Normally the generator does not validate that strings you pass to it via yajl_gen_string() are valid UTF8. Enabling this option will cause it to do so.
yajl_gen_escape_solidus | the forward solidus (slash or '/' in human) is not required to be escaped in json text. By default, YAJL will not escape it in the iterest of saving bytes. Setting this flag will cause YAJL to always escape '/' in generated JSON strings.

## yajl_gen_status

enum yajl_gen_status

generator status codes

Enumerator
yajl_gen_status_ok | no error
yajl_gen_keys_must_be_strings | at a point where a map key is generated, a function other than yajl_gen_string was called
yajl_max_depth_exceeded | YAJL's maximum generation depth was exceeded. see YAJL_MAX_DEPTH
yajl_gen_in_error_state | A generator function (yajl_gen_XXX) was called while in an error state
yajl_gen_generation_complete | A complete JSON document has been generated
yajl_gen_invalid_number | yajl_gen_double was passed an invalid floating point value (infinity or NaN).
yajl_gen_no_buf | A print callback was passed in, so there is no internal buffer to get from
yajl_gen_invalid_string | returned from yajl_gen_string() when the yajl_gen_validate_utf8 option is enabled and an invalid was passed by client code.

## Function Documentation

## yajl_gen_alloc()

YAJL_API yajl_gen yajl_gen_alloc | ( | const yajl_alloc_funcs * | allocFuncs | ) |

allocate a generator handle

Parameters

  allocFuncs | an optional pointer to a structure which allows the client to overide the memory allocation used by yajl. May be NULL, in which case malloc/free/realloc will be used.

Returns
  an allocated handle on success, NULL on failure (bad params)

References YAJL_API.

## yajl_gen_array_close()

YAJL_API yajl_gen_status yajl_gen_array_close | ( | yajl_gen | hand | ) |

References YAJL_API.

## yajl_gen_array_open()

YAJL_API yajl_gen_status yajl_gen_array_open | ( | yajl_gen | hand | ) |

References YAJL_API.

## yajl_gen_bool()

YAJL_API yajl_gen_status yajl_gen_bool | ( | yajl_gen | hand,
|  | int | boolean )

References YAJL_API.

## yajl_gen_clear()

YAJL_API void yajl_gen_clear | ( | yajl_gen | hand | ) |

clear yajl's output buffer, but maintain all internal generation state. This function will not "reset" the generator state, and is intended to enable incremental JSON outputing.

References YAJL_API.

## yajl_gen_config()

YAJL_API int yajl_gen_config | ( | yajl_gen | g,
|  | yajl_gen_option | opt,
|  |  | ... )

allow the modification of generator options subsequent to handle allocation (via yajl_alloc)

Returns
  zero in case of errors, non-zero otherwise

References YAJL_API.

## yajl_gen_double()

YAJL_API yajl_gen_status yajl_gen_double | ( | yajl_gen | hand,
|  | double | number )

generate a floating point number. number may not be infinity or NaN, as these have no representation in JSON. In these cases the generator will return 'yajl_gen_invalid_number'

References YAJL_API.

## yajl_gen_free()

YAJL_API void yajl_gen_free | ( | yajl_gen | handle | ) |

free a generator handle

References YAJL_API.

## yajl_gen_get_buf()

YAJL_API yajl_gen_status yajl_gen_get_buf | ( | yajl_gen | hand,
|  | const unsigned char ** | buf,
|  | size_t * | len )

access the null terminated generator buffer. If incrementally outputing JSON, one should call yajl_gen_clear to clear the buffer. This allows stream generation.

References YAJL_API.

## yajl_gen_integer()

YAJL_API yajl_gen_status yajl_gen_integer | ( | yajl_gen | hand,
|  | long long int | number )

References YAJL_API.

## yajl_gen_map_close()

YAJL_API yajl_gen_status yajl_gen_map_close | ( | yajl_gen | hand | ) |

References YAJL_API.

## yajl_gen_map_open()

YAJL_API yajl_gen_status yajl_gen_map_open | ( | yajl_gen | hand | ) |

References YAJL_API.

## yajl_gen_null()

YAJL_API yajl_gen_status yajl_gen_null | ( | yajl_gen | hand | ) |

References YAJL_API.

## yajl_gen_number()

YAJL_API yajl_gen_status yajl_gen_number | ( | yajl_gen | hand,
|  | const char * | num,
|  | size_t | len )

References YAJL_API.

## yajl_gen_reset()

YAJL_API void yajl_gen_reset | ( | yajl_gen | hand,
|  | const char * | sep )

Reset the generator state. Allows a client to generate multiple json entities in a stream. The "sep" string will be inserted to separate the previously generated entity from the current, NULL means no separation of entites (clients beware, generating multiple JSON numbers, for instance, will result in inscrutable output)

References YAJL_API.

## yajl_gen_string()

YAJL_API yajl_gen_status yajl_gen_string | ( | yajl_gen | hand,
|  | const unsigned char * | str,
|  | size_t | len )

References YAJL_API.