YAJL
2.1.0
Main Page
Data Structures
Files
Examples
File List
Globals
src
api
yajl_parse.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2007-2014, Lloyd Hilaiel <me@lloyd.io>
3
*
4
* Permission to use, copy, modify, and/or distribute this software for any
5
* purpose with or without fee is hereby granted, provided that the above
6
* copyright notice and this permission notice appear in all copies.
7
*
8
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
*/
16
22
#include <yajl/yajl_common.h>
23
24
#ifndef __YAJL_PARSE_H__
25
#define __YAJL_PARSE_H__
26
27
#include <stddef.h>
28
29
#ifdef __cplusplus
30
extern
"C"
{
31
#endif
32
33
typedef
enum
{
35
yajl_status_ok
,
37
yajl_status_client_canceled
,
40
yajl_status_error
41
}
yajl_status
;
42
44
YAJL_API
const
char
*
yajl_status_to_string
(
yajl_status
code);
45
47
typedef
struct
yajl_handle_t *
yajl_handle
;
48
74
typedef
struct
{
75
int (* yajl_null)(
void
* ctx);
76
int (* yajl_boolean)(
void
* ctx,
int
boolVal);
77
int (* yajl_integer)(
void
* ctx,
long
long
integerVal);
78
int (* yajl_double)(
void
* ctx,
double
doubleVal);
81
int (* yajl_number)(
void
* ctx,
const
char
* numberVal,
82
size_t
numberLen);
83
86
int (* yajl_string)(
void
* ctx,
const
unsigned
char
* stringVal,
87
size_t
stringLen);
88
89
int (* yajl_start_map)(
void
* ctx);
90
int (* yajl_map_key)(
void
* ctx,
const
unsigned
char
* key,
91
size_t
stringLen);
92
int (* yajl_end_map)(
void
* ctx);
93
94
int (* yajl_start_array)(
void
* ctx);
95
int (* yajl_end_array)(
void
* ctx);
96
}
yajl_callbacks
;
97
107
YAJL_API
yajl_handle
yajl_alloc
(
const
yajl_callbacks
* callbacks,
108
yajl_alloc_funcs
* afs,
109
void
* ctx);
110
111
115
typedef
enum
{
123
yajl_allow_comments
= 0x01,
133
yajl_dont_validate_strings
= 0x02,
141
yajl_allow_trailing_garbage
= 0x04,
151
yajl_allow_multiple_values
= 0x08,
159
yajl_allow_partial_values
= 0x10
160
}
yajl_option
;
161
166
YAJL_API
int
yajl_config
(yajl_handle h,
yajl_option
opt, ...);
167
169
YAJL_API
void
yajl_free
(yajl_handle handle);
170
176
YAJL_API
yajl_status
yajl_parse
(yajl_handle hand,
177
const
unsigned
char
* jsonText,
178
size_t
jsonTextLength);
179
189
YAJL_API
yajl_status
yajl_complete_parse
(yajl_handle hand);
190
201
YAJL_API
unsigned
char
*
yajl_get_error
(yajl_handle hand,
int
verbose,
202
const
unsigned
char
* jsonText,
203
size_t
jsonTextLength);
204
217
YAJL_API
size_t
yajl_get_bytes_consumed
(yajl_handle hand);
218
220
YAJL_API
void
yajl_free_error
(yajl_handle hand,
unsigned
char
* str);
221
222
#ifdef __cplusplus
223
}
224
#endif
225
226
#endif
Generated on Thu Sep 30 2021 22:23:05 for YAJL by
1.8.1.2