00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef uripp_urisyn_h
00023 #define uripp_urisyn_h
00024 #include "apidefs.h"
00025 #include "utils.h"
00026 #include <string>
00027 namespace uripp {
00029 namespace urisyn {
00031 enum char_class_e {
00032 CINV = -2,
00033 CEND = -1,
00034 CVAL = 0,
00035 CVA2 = 1,
00036 };
00038 struct URIPP_API traits {
00039 const char* begin_cstring;
00040 const char begin_char;
00041 const char end_char;
00042 char char_class[256];
00043 };
00057 bool URIPP_API parse(const traits& ts, std::string::const_iterator& first, std::string::const_iterator last, std::string& comp, char* endc = 0);
00070 std::string URIPP_API encode(const traits& ts, const std::string& comp);
00075 bool URIPP_API decode(std::string& s);
00076 extern const char URIPP_API ENCODE_BEGIN_CHAR;
00077 extern const traits URIPP_API SCHEME_TRAITS;
00078 extern const traits URIPP_API AUTHORITY_TRAITS;
00079 extern const traits URIPP_API PATH_TRAITS;
00080 extern const traits URIPP_API QUERY_TRAITS;
00081 extern const traits URIPP_API FRAGMENT_TRAITS;
00082 }
00083 }
00084 #endif