1// Copyright (c) 2020, Peter Ohler, All rights reserved.
2
3package oj
4
5const (
6	skipChar    = 'a'
7	skipNewline = 'b'
8	valNull     = 'c'
9	valTrue     = 'd'
10	valFalse    = 'e'
11	valNeg      = 'f'
12	val0        = 'g'
13	valDigit    = 'h'
14	valQuote    = 'i'
15	openArray   = 'k'
16	openObject  = 'l'
17	closeArray  = 'm'
18	closeObject = 'n'
19	afterComma  = 'o'
20	keyQuote    = 'p'
21	colonColon  = 'q'
22	numSpc      = 'r'
23	numNewline  = 's'
24	numDot      = 't'
25	numComma    = 'u'
26	numFrac     = 'v'
27	fracE       = 'w'
28	expSign     = 'x'
29	expDigit    = 'y'
30	strQuote    = 'z'
31	negDigit    = '-'
32	strSlash    = 'A'
33	escOk       = 'B'
34	uOk         = 'E'
35	tokenOk     = 'F'
36	numDigit    = 'N'
37	numZero     = 'O'
38	strOk       = 'R'
39	escU        = 'U'
40	charErr     = '.'
41
42	//   0123456789abcdef0123456789abcdef
43	valueMap = "" +
44		".........ab..a.................." + // 0x00
45		"a.i..........f..ghhhhhhhhh......" + // 0x20
46		"...........................k.m.." + // 0x40
47		"......e.......c.....d......l.n.." + // 0x60
48		"................................" + // 0x80
49		"................................" + // 0xa0
50		"................................" + // 0xc0
51		"................................v" //  0xe0
52	//   0123456789abcdef0123456789abcdef
53	nullMap = "" +
54		"................................" + // 0x00
55		"............o..................." + // 0x20
56		"................................" + // 0x40
57		"............F........F.........." + // 0x60
58		"................................" + // 0x80
59		"................................" + // 0xa0
60		"................................" + // 0xc0
61		"................................" //   0xe0
62	//   0123456789abcdef0123456789abcdef
63	trueMap = "" +
64		"................................" + // 0x00
65		"............o..................." + // 0x20
66		"................................" + // 0x40
67		".....F............F..F.........." + // 0x60
68		"................................" + // 0x80
69		"................................" + // 0xa0
70		"................................" + // 0xc0
71		"................................" //   0xe0
72	//   0123456789abcdef0123456789abcdef
73	falseMap = "" +
74		"................................" + // 0x00
75		"............o..................." + // 0x20
76		"................................" + // 0x40
77		".F...F......F......F............" + // 0x60
78		"................................" + // 0x80
79		"................................" + // 0xa0
80		"................................" + // 0xc0
81		"................................" //   0xe0
82	//   0123456789abcdef0123456789abcdef
83	commaMap = "" +
84		".........ab..a.................." + // 0x00
85		"a.i..........f..ghhhhhhhhh......" + // 0x20
86		"...........................k...." + // 0x40
87		"......e.......c.....d......l...." + // 0x60
88		"................................" + // 0x80
89		"................................" + // 0xa0
90		"................................" + // 0xc0
91		"................................" //   0xe0
92	//   0123456789abcdef0123456789abcdef
93	afterMap = "" +
94		".........ab..a.................." + // 0x00
95		"a...........o..................." + // 0x20
96		".............................m.." + // 0x40
97		".............................n.." + // 0x60
98		"................................" + // 0x80
99		"................................" + // 0xa0
100		"................................" + // 0xc0
101		"................................a" //  0xe0
102	//   0123456789abcdef0123456789abcdef
103	key1Map = "" +
104		".........ab..a.................." + // 0x00
105		"a.p............................." + // 0x20
106		"................................" + // 0x40
107		".............................n.." + // 0x60
108		"................................" + // 0x80
109		"................................" + // 0xa0
110		"................................" + // 0xc0
111		"................................" //   0xe0
112	//   0123456789abcdef0123456789abcdef
113	keyMap = "" +
114		".........ab..a.................." + // 0x00
115		"a.p............................." + // 0x20
116		"................................" + // 0x40
117		"................................" + // 0x60
118		"................................" + // 0x80
119		"................................" + // 0xa0
120		"................................" + // 0xc0
121		"................................" //   0xe0
122	//   0123456789abcdef0123456789abcdef
123	colonMap = "" +
124		".........ab..a.................." + // 0x00
125		"a.........................q....." + // 0x20
126		"................................" + // 0x40
127		"................................" + // 0x60
128		"................................" + // 0x80
129		"................................" + // 0xa0
130		"................................" + // 0xc0
131		"................................" //   0xe0
132	//   0123456789abcdef0123456789abcdef
133	negMap = "" +
134		"................................" + // 0x00
135		"................O---------......" + // 0x20
136		"................................" + // 0x40
137		"................................" + // 0x60
138		"................................" + // 0x80
139		"................................" + // 0xa0
140		"................................" + // 0xc0
141		"................................" //   0xe0
142	//   0123456789abcdef0123456789abcdef
143	zeroMap = "" +
144		".........rs..r.................." + // 0x00
145		"r...........u.t................." + // 0x20
146		".............................m.." + // 0x40
147		".............................n.." + // 0x60
148		"................................" + // 0x80
149		"................................" + // 0xa0
150		"................................" + // 0xc0
151		"................................n" //  0xe0
152	//   0123456789abcdef0123456789abcdef
153	digitMap = "" +
154		".........rs..r.................." + // 0x00
155		"r...........u.t.NNNNNNNNNN......" + // 0x20
156		".....w.......................m.." + // 0x40
157		".....w.......................n.." + // 0x60
158		"................................" + // 0x80
159		"................................" + // 0xa0
160		"................................" + // 0xc0
161		"................................n" //  0xe0
162	//   0123456789abcdef0123456789abcdef
163	dotMap = "" +
164		"................................" + // 0x00
165		"................vvvvvvvvvv......" + // 0x20
166		"................................" + // 0x40
167		"................................" + // 0x60
168		"................................" + // 0x80
169		"................................" + // 0xa0
170		"................................" + // 0xc0
171		"................................" //   0xe0
172	//   0123456789abcdef0123456789abcdef
173	fracMap = "" +
174		".........rs..r.................." + // 0x00
175		"r...........u...vvvvvvvvvv......" + // 0x20
176		".....w.......................m.." + // 0x40
177		".....w.......................n.." + // 0x60
178		"................................" + // 0x80
179		"................................" + // 0xa0
180		"................................" + // 0xc0
181		"................................n" //  0xe0
182	//   0123456789abcdef0123456789abcdef
183	expSignMap = "" +
184		"................................" + // 0x00
185		"...........x.x..yyyyyyyyyy......" + // 0x20
186		"................................" + // 0x40
187		"................................" + // 0x60
188		"................................" + // 0x80
189		"................................" + // 0xa0
190		"................................" + // 0xc0
191		"................................" //   0xe0
192	//   0123456789abcdef0123456789abcdef
193	expZeroMap = "" +
194		"................................" + // 0x00
195		"................yyyyyyyyyy......" + // 0x20
196		"................................" + // 0x40
197		"................................" + // 0x60
198		"................................" + // 0x80
199		"................................" + // 0xa0
200		"................................" + // 0xc0
201		"................................" //   0xe0
202	//   0123456789abcdef0123456789abcdef
203	expMap = "" +
204		".........rs..r.................." + // 0x00
205		"r...........u...yyyyyyyyyy......" + // 0x20
206		".............................m.." + // 0x40
207		".............................n.." + // 0x60
208		"................................" + // 0x80
209		"................................" + // 0xa0
210		"................................" + // 0xc0
211		"................................n" //  0xe0
212	//   0123456789abcdef0123456789abcdef
213	stringMap = "" +
214		"................................" + // 0x00
215		"RRzRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" + // 0x20
216		"RRRRRRRRRRRRRRRRRRRRRRRRRRRRARRR" + // 0x40
217		"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" + // 0x60
218		"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" + // 0x80
219		"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" + // 0xR0
220		"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" + // 0xc0
221		"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" //   0xe0
222	//   0123456789abcdef0123456789abcdef
223	escMap = "" +
224		"................................" + // 0x00
225		"..B............B................" + // 0x20
226		"............................B..." + // 0x40
227		"..B...B.......B...B.BU.........." + // 0x60
228		"................................" + // 0x80
229		"................................" + // 0xa0
230		"................................" + // 0xc0
231		"................................" //   0xe0
232	//   0123456789abcdef0123456789abcdef
233	escByteMap = "" +
234		"................................" + // 0x00
235		"..\"............/................" + // 0x20
236		"............................\\..." + // 0x40
237		"..\b...\f.......\n...\r.\t.........." + // 0x60
238		"................................" + // 0x80
239		"................................" + // 0xa0
240		"................................" + // 0xc0
241		"................................" //   0xe0
242	//   0123456789abcdef0123456789abcdef
243	uMap = "" +
244		"................................" + // 0x00
245		"................EEEEEEEEEE......" + // 0x20
246		".EEEEEE........................." + // 0x40
247		".EEEEEE........................." + // 0x60
248		"................................" + // 0x80
249		"................................" + // 0xa0
250		"................................" + // 0xc0
251		"................................" //   0xe0
252	//   0123456789abcdef0123456789abcdef
253	spaceMap = "" +
254		".........ab..a.................." + // 0x00
255		"a..............................." + // 0x20
256		"................................" + // 0x40
257		"................................" + // 0x60
258		"................................" + // 0x80
259		"................................" + // 0xa0
260		"................................" + // 0xc0
261		"................................s" //   0xe0
262)
263
264/*
265// Uncomment for debugging
266func whichMode(mode string) string {
267	switch mode {
268	case valueMap:
269		return "value"
270	case nullMap:
271		return "null"
272	case trueMap:
273		return "true"
274	case falseMap:
275		return "false"
276	case commaMap:
277		return "comma"
278	case afterMap:
279		return "after"
280	case key1Map:
281		return "key1"
282	case keyMap:
283		return "key"
284	case colonMap:
285		return "colon"
286	case negMap:
287		return "neg"
288	case zeroMap:
289		return "zero"
290	case digitMap:
291		return "digit"
292	case dotMap:
293		return "dot"
294	case fracMap:
295		return "frac"
296	case expSignMap:
297		return "expSign"
298	case expZeroMap:
299		return "expZero"
300	case expMap:
301		return "exp"
302	case stringMap:
303		return "string"
304	case escMap:
305		return "esc"
306	case escByteMap:
307		return "escByte"
308	case uMap:
309		return "u"
310	case spaceMap:
311		return "space"
312	default:
313		return "unknown"
314	}
315}
316*/
317