1 /*
2  * Copyright 2010-2019 Branimir Karadzic. All rights reserved.
3  * License: https://github.com/bkaradzic/bx#license-bsd-2-clause
4  */
5 
6 #ifndef BX_URL_H_HEADER_GUARD
7 #define BX_URL_H_HEADER_GUARD
8 
9 #include "string.h"
10 
11 namespace bx
12 {
13 	///
14 	class UrlView
15 	{
16 	public:
17 		enum Enum
18 		{
19 			Scheme,
20 			UserName,
21 			Password,
22 			Host,
23 			Port,
24 			Path,
25 			Query,
26 			Fragment,
27 
28 			Count
29 		};
30 
31 		///
32 		UrlView();
33 
34 		///
35 		void clear();
36 
37 		///
38 		bool parse(const StringView& _url);
39 
40 		///
41 		const StringView& get(Enum _token) const;
42 
43 	private:
44 		StringView m_tokens[Count];
45 	};
46 
47 	///
48 	void urlEncode(char* _out, uint32_t _max, const StringView& _str);
49 
50 } // namespace bx
51 
52 #endif // BX_URL_H_HEADER_GUARD
53