Ruby
2.1.3p242(2014-09-19revision47630)
Main Page
Modules
Data Structures
Files
File List
Globals
ext
json
parser
parser.h
Go to the documentation of this file.
1
#ifndef _PARSER_H_
2
#define _PARSER_H_
3
4
#include "
ruby.h
"
5
6
#ifndef HAVE_RUBY_RE_H
7
#include "
re.h
"
8
#endif
9
10
#ifdef HAVE_RUBY_ST_H
11
#include "
ruby/st.h
"
12
#else
13
#include "
st.h
"
14
#endif
15
16
#define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key))
17
18
/* unicode */
19
20
typedef
unsigned
long
UTF32
;
/* at least 32 bits */
21
typedef
unsigned
short
UTF16
;
/* at least 16 bits */
22
typedef
unsigned
char
UTF8
;
/* typically 8 bits */
23
24
#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD
25
#define UNI_SUR_HIGH_START (UTF32)0xD800
26
#define UNI_SUR_HIGH_END (UTF32)0xDBFF
27
#define UNI_SUR_LOW_START (UTF32)0xDC00
28
#define UNI_SUR_LOW_END (UTF32)0xDFFF
29
30
typedef
struct
JSON_ParserStruct
{
31
VALUE
Vsource
;
32
char
*
source
;
33
long
len
;
34
char
*
memo
;
35
VALUE
create_id
;
36
int
max_nesting
;
37
int
current_nesting
;
38
int
allow_nan
;
39
int
parsing_name
;
40
int
symbolize_names
;
41
int
quirks_mode
;
42
VALUE
object_class
;
43
VALUE
array_class
;
44
int
create_additions
;
45
VALUE
match_string
;
46
FBuffer
*
fbuffer
;
47
}
JSON_Parser
;
48
49
#define GET_PARSER \
50
GET_PARSER_INIT; \
51
if (!json->Vsource) rb_raise(rb_eTypeError, "uninitialized instance")
52
#define GET_PARSER_INIT \
53
JSON_Parser *json; \
54
Data_Get_Struct(self, JSON_Parser, json)
55
56
#define MinusInfinity "-Infinity"
57
#define EVIL 0x666
58
59
static
UTF32
unescape_unicode
(
const
unsigned
char
*p);
60
static
int
convert_UTF32_to_UTF8
(
char
*
buf
,
UTF32
ch);
61
static
char
*
JSON_parse_object
(
JSON_Parser
*json,
char
*p,
char
*pe,
VALUE
*
result
);
62
static
char
*
JSON_parse_value
(
JSON_Parser
*json,
char
*p,
char
*pe,
VALUE
*
result
);
63
static
char
*
JSON_parse_integer
(
JSON_Parser
*json,
char
*p,
char
*pe,
VALUE
*
result
);
64
static
char
*
JSON_parse_float
(
JSON_Parser
*json,
char
*p,
char
*pe,
VALUE
*
result
);
65
static
char
*
JSON_parse_array
(
JSON_Parser
*json,
char
*p,
char
*pe,
VALUE
*
result
);
66
static
VALUE
json_string_unescape
(
VALUE
result
,
char
*
string
,
char
*stringEnd);
67
static
char
*
JSON_parse_string
(
JSON_Parser
*json,
char
*p,
char
*pe,
VALUE
*
result
);
68
static
VALUE
convert_encoding
(
VALUE
source);
69
static
VALUE
cParser_initialize
(
int
argc
,
VALUE
*
argv
,
VALUE
self
);
70
static
VALUE
cParser_parse
(
VALUE
self
);
71
static
JSON_Parser
*
JSON_allocate
();
72
static
void
JSON_mark
(
JSON_Parser
*json);
73
static
void
JSON_free
(
JSON_Parser
*json);
74
static
VALUE
cJSON_parser_s_allocate
(
VALUE
klass);
75
static
VALUE
cParser_source
(
VALUE
self
);
76
77
#endif
78
Generated on Mon Sep 22 2014 11:05:23 for Ruby by
1.8.2