xref: /haiku/headers/private/shared/Json.h (revision 4d8811742fa447ec05b4993a16a0931bc29aafab)
1 /*
2  * Copyright 2014, Augustin Cavalier (waddlesplash)
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef _JSON_H
6 #define _JSON_H
7 
8 #include <Message.h>
9 #include <String.h>
10 
11 namespace BPrivate {
12 
13 class BJson {
14 public:
15 			enum JsonObjectType {
16 				JSON_TYPE_MAP = '_JTM',
17 				JSON_TYPE_ARRAY = '_JTA'
18 			};
19 
20 public:
21 	static	status_t			Parse(const char* JSON, BMessage& message);
22 	static	status_t			Parse(const BString& JSON, BMessage& message);
23 
24 private:
25 	static	void				_Parse(const BString& JSON, BMessage& message);
26 	static	BString				_ParseString(const BString& JSON, int32& pos);
27 	static	double				_ParseNumber(const BString& JSON, int32& pos);
28 	static	bool				_ParseConstant(const BString& JSON, int32& pos,
29 									 const char* constant);
30 };
31 
32 } // namespace BPrivate
33 
34 using BPrivate::BJson;
35 
36 #endif	// _JSON_H
37