+++ /dev/null
-// Roast+ License
-
-/*
- Uniform Resource Identifier
-*/
-#ifndef __SFJP_ROAST__net__uri_HPP__
-#define __SFJP_ROAST__net__uri_HPP__
-
-#include "roast/net/uri/uri.hpp"
-
-#endif//__SFJP_ROAST__net__uri_HPP__
+++ /dev/null
-// Roast+ License
-
-/*
-*/
-#ifndef __SFJP_ROAST__net__uri__scheme_name_HPP__
-#define __SFJP_ROAST__net__uri__scheme_name_HPP__
-
-#include "roast/lexical.hpp"
-
-namespace roast
-{
- /*namespace uri
- {*/
- //template <typename _Scheme, typename _Body> class uri_ : public uri_rule<_Scheme, _Body>
-
- template <typename _Scheme, typename _Body>
- class uri_<_Scheme, _Body>::scheme_names
- {
- public:
- // URI
- // Permanent URI Schemes
- ROAST_LEXICAL_FIXSTR2(aaas) // Diameter Protocol with Secure Transport [RFC3588]
- ROAST_LEXICAL_FIXSTR2(acap) // application configuration access protocol [RFC2244]
- ROAST_LEXICAL_FIXSTR2(cap) // Calendar Access Protocol [RFC4324]
- ROAST_LEXICAL_FIXSTR2(cid) // content identifier [RFC2392]
- ROAST_LEXICAL_FIXSTR2(crid) // TV-Anytime Content Reference Identifier [RFC4078]
- ROAST_LEXICAL_FIXSTR2(data) // data [RFC2397]
- ROAST_LEXICAL_FIXSTR2(dav) // dav [RFC4918]
- ROAST_LEXICAL_FIXSTR2(dict) // dictionary service protocol [RFC2229]
- ROAST_LEXICAL_FIXSTR2(dns) // Domain Name System [RFC4501]
- ROAST_LEXICAL_FIXSTR2(file) // Host-specific file names [RFC1738]
- ROAST_LEXICAL_FIXSTR2(ftp) // File Transfer Protocol [RFC1738]
- ROAST_LEXICAL_FIXSTR2(geo) // Geographic Locations [RFC5870]
- ROAST_LEXICAL_FIXSTR2(go) // go [RFC3368]
- ROAST_LEXICAL_FIXSTR2(gopher) // The Gopher Protocol [RFC4266]
- ROAST_LEXICAL_FIXSTR2(h323) // H.323 [RFC3508]
- ROAST_LEXICAL_FIXSTR2(http) // Hypertext Transfer Protocol [RFC2616]
- ROAST_LEXICAL_FIXSTR2(https) // Hypertext Transfer Protocol Secure [RFC2818]
- ROAST_LEXICAL_FIXSTR2(iax) // Inter-Asterisk eXchange Version 2 [RFC5456]
- ROAST_LEXICAL_FIXSTR2(icap) // Internet Content Adaptation Protocol [RFC3507]
- ROAST_LEXICAL_FIXSTR2(im) // Instant Messaging [RFC3860]
- ROAST_LEXICAL_FIXSTR2(imap) // internet message access protocol [RFC5092]
- ROAST_LEXICAL_FIXSTR2(info) // Information Assets with Identifiers in Public Namespaces [RFC4452]
- ROAST_LEXICAL_FIXSTR2(ipp) // Internet Printing Protocol [RFC3510]
- ROAST_LEXICAL_FIXSTR2(iris) // Internet Registry Information Service [RFC3981]
- ROAST_LEXICAL_FIXSTR(iris_beep, "iris.beep") // iris.beep [RFC3983]
- ROAST_LEXICAL_FIXSTR(iris_xpc, "iris.xpc") // iris.xpc [RFC4992]
- ROAST_LEXICAL_FIXSTR(iris_xpcs, "iris.xpcs") // iris.xpcs [RFC4992]
- ROAST_LEXICAL_FIXSTR(iris_lwz, "iris.lwz") // iris.lwz [RFC4993]
- ROAST_LEXICAL_FIXSTR2(ldap) // Lightweight Directory Access Protocol [RFC4516]
- ROAST_LEXICAL_FIXSTR2(mailto) // Electronic mail address [RFC6068]
- ROAST_LEXICAL_FIXSTR2(mid) // message identifier [RFC2392]
- ROAST_LEXICAL_FIXSTR2(msrp) // Message Session Relay Protocol [RFC4975]
- ROAST_LEXICAL_FIXSTR2(msrps) // Message Session Relay Protocol Secure [RFC4975]
- ROAST_LEXICAL_FIXSTR2(mtqp) // Message Tracking Query Protocol [RFC3887]
- ROAST_LEXICAL_FIXSTR2(mupdate) // Mailbox Update (MUPDATE) Protocol [RFC3656]
- ROAST_LEXICAL_FIXSTR2(news) // USENET news [RFC5538]
- ROAST_LEXICAL_FIXSTR2(nfs) // network file system protocol [RFC2224]
- ROAST_LEXICAL_FIXSTR2(nntp) // USENET news using NNTP access [RFC5538]
- ROAST_LEXICAL_FIXSTR2(opaquelocktoken) // opaquelocktokent [RFC4918]
- ROAST_LEXICAL_FIXSTR2(pop) // Post Office Protocol v3 [RFC2384]
- ROAST_LEXICAL_FIXSTR2(pres) // Presence [RFC3859]
- ROAST_LEXICAL_FIXSTR2(rtsp) // real time streaming protocol [RFC2326]
- ROAST_LEXICAL_FIXSTR2(service) // service location [RFC2609]
- ROAST_LEXICAL_FIXSTR2(shttp) // Secure Hypertext Transfer Protocol [RFC2660]
- ROAST_LEXICAL_FIXSTR2(sieve) // ManageSieve Protocol [RFC5804]
- ROAST_LEXICAL_FIXSTR2(sip) // session initiation protocol [RFC3261]
- ROAST_LEXICAL_FIXSTR2(sips) // secure session initiation protocol [RFC3261]
- ROAST_LEXICAL_FIXSTR2(sms) // Short Message Service [RFC5724]
- ROAST_LEXICAL_FIXSTR2(snmp) // Simple Network Management Protocol [RFC4088]
- ROAST_LEXICAL_FIXSTR(soap_beep, "soap.beep") // soap.beep [RFC4227]
- ROAST_LEXICAL_FIXSTR(soap_beeps, "soap.beeps") // soap.beeps [RFC4227]
- ROAST_LEXICAL_FIXSTR2(tag) // tag [RFC4151]
- ROAST_LEXICAL_FIXSTR2(tel) // telephone [RFC3966]
- ROAST_LEXICAL_FIXSTR2(telnet) // Reference to interactive sessions [RFC4248]
- ROAST_LEXICAL_FIXSTR2(tftp) // Trivial File Transfer Protocol [RFC3617]
- ROAST_LEXICAL_FIXSTR2(thismessage) // multipart/related relative reference resolution [RFC2557]
- ROAST_LEXICAL_FIXSTR2(tn3270) // Interactive 3270 emulation sessions [RFC6270]
- ROAST_LEXICAL_FIXSTR2(tip) // Transaction Internet Protocol [RFC2371]
- ROAST_LEXICAL_FIXSTR2(tv) // TV Broadcasts [RFC2838]
- ROAST_LEXICAL_FIXSTR2(urn) // Uniform Resource Names (click for registry) [RFC2141]
- ROAST_LEXICAL_FIXSTR2(vemmi) // versatile multimedia interface [RFC2122]
- ROAST_LEXICAL_FIXSTR2(ws) // WebSocket connections [RFC6455]
- ROAST_LEXICAL_FIXSTR2(wss) // Encrypted WebSocket connections [RFC6455]
- ROAST_LEXICAL_FIXSTR2(xcon) // xcon [RFC6501]
- ROAST_LEXICAL_FIXSTR(xcon_userid, "xcon-userid") // xcon-userid [RFC6501]
- ROAST_LEXICAL_FIXSTR(xmlrpc_beep, "xmlrpc.beep") // xmlrpc.beep [RFC3529]
- ROAST_LEXICAL_FIXSTR(xmlrpc_beeps, "xmlrpc.beeps") // xmlrpc.beeps [RFC3529]
- ROAST_LEXICAL_FIXSTR2(xmpp) // Extensible Messaging and Presence Protocol [RFC5122]
- ROAST_LEXICAL_FIXSTR(z39_50r, "z39.50r") // Z39.50 Retrieval [RFC2056]
- ROAST_LEXICAL_FIXSTR(z39_50s, "z39.50s") // Z39.50 Session [RFC2056]
-
- // Provisional URI Schemes
- ROAST_LEXICAL_FIXSTR2(afs) // Andrew File System global file names [RFC1738]
- ROAST_LEXICAL_FIXSTR(com_eventbrite_attendee, "com-eventbrite-attendee") // com-eventbrite-attendee [Van Zant]
- ROAST_LEXICAL_FIXSTR(dlna_playsingle, "dlna-playsingle") // dlna-playsingle [DLNA]
- ROAST_LEXICAL_FIXSTR(dlna_playcontainer, "dlna-playcontainer") // dlna-playcontainer [DLNA]
- ROAST_LEXICAL_FIXSTR2(dtn) // DTNRG research and development [RFC5050]
- ROAST_LEXICAL_FIXSTR2(dvb) // dvb [draft-mcroberts-uri-dvb]
- ROAST_LEXICAL_FIXSTR2(icon) // icon [draft-lafayette-icon-uri-scheme]
- ROAST_LEXICAL_FIXSTR2(ipn) // ipn [RFC6260]
- ROAST_LEXICAL_FIXSTR2(jms) // Java Message Service [RFC6167]
- ROAST_LEXICAL_FIXSTR2(oid) // oid [draft-larmouth-oid-iri]
- ROAST_LEXICAL_FIXSTR2(rsync) // rsync [RFC5781]
- ROAST_LEXICAL_FIXSTR(view_source, "view-source") // view-source [Yevstifeyev]
-
- // HistoricalURISchemes
- ROAST_LEXICAL_FIXSTR2(fax) // fax [RFC2806][RFC3966]
- ROAST_LEXICAL_FIXSTR2(mailserver) // Access to data available from mail servers [RFC6196]
- ROAST_LEXICAL_FIXSTR2(modem) // modem [RFC2806][RFC3966]
- ROAST_LEXICAL_FIXSTR2(pack) // pack [draft-shur-pack-uri-scheme]
- ROAST_LEXICAL_FIXSTR2(prospero) // Prospero Directory Service [RFC4157]
- ROAST_LEXICAL_FIXSTR2(snews) // NNTP over SSL/TLS [RFC5538]
- ROAST_LEXICAL_FIXSTR2(videotex) // videotex [draft-mavrakis-videotex-url-spec] [RFC2122] [RFC3986]
- ROAST_LEXICAL_FIXSTR2(wais) // Wide Area Information Servers [RFC4156]
- ROAST_LEXICAL_FIXSTR(z39_50, "z39.50") // Z39.50 information access [RFC1738][RFC2056]
-
-
- // URN
- ROAST_LEXICAL_FIXSTR2(ietf)
- ROAST_LEXICAL_FIXSTR2(pin)
- ROAST_LEXICAL_FIXSTR2(issn)
- ROAST_LEXICAL_FIXSTR2(newsml)
- ROAST_LEXICAL_FIXSTR2(oasis)
- ROAST_LEXICAL_FIXSTR2(xmlorg)
- ROAST_LEXICAL_FIXSTR2(publicid)
- ROAST_LEXICAL_FIXSTR2(isbn)
- };
- //}
-}
-
-#endif//__SFJP_ROAST__net__uri__scheme_name_HPP__
+++ /dev/null
-// Roast+ License
-
-/*
- Uniform Resource Identifier
-*/
-#ifndef __SFJP_ROAST__net__uri__uri_HPP__
-#define __SFJP_ROAST__net__uri__uri_HPP__
-
-#include "roast/lexical.hpp"
-#include "roast/delay_ref.hpp"
-#include <string>
-
-namespace roast
-{
- ///////////////////////////////////////////////////////////////////////////
-
- // Syntax:
- // scheme ":" hier-part [ "?" query ] [ "#" fragment ]
- template <typename _Scheme, typename _Body>
- class uri_rule : public ::roast::lexical::seq<
- _Scheme, ::roast::lexical::chars::colon, _Body> {};
- /////
-
- template <typename _Scheme = lexical::string, typename _Body = lexical::string>
- class uri_ : public uri_rule<_Scheme, _Body>
- {
- private:
- typedef uri_rule<_Scheme, _Body> _Base;
-
- //template <int N> void ref(); // for gcc compilable workaround...
-
- public:
- delay_ref<_Scheme> scheme;
- delay_ref<_Body> body;
- //_Scheme scheme;
- //_Body body;
-
- class scheme_names;
-
- public:
- uri_(){
- //scheme = nest_type::ref<0>();
- //body = this->ref<2>();
- scheme = _nest_type::ref<0>(*this, _nest_type::_get_n<0>()); // for gcc compilable workaround...
- body = _nest_type::ref<2>(*this, _nest_type::_get_n<2>()); // for gcc compilable workaround...
- }
- uri_(const _Scheme& scheme_in, const _Body& body_in)
- {
- //scheme = this->ref<0>();
- //body = this->ref<2>();
- scheme = _nest_type::ref<0>(*this, _nest_type::_get_n<0>()); // for gcc compilable workaround...
- body = _nest_type::ref<2>(*this, _nest_type::_get_n<2>()); // for gcc compilable workaround...
-
- scheme = scheme_in;
- body = body_in;
- }
-
- /*_Scheme& scheme(){ return _Base::ref<0>(); }
- const _Scheme& scheme() const { return _Base::ref<0>(); }
-
- _Body& body(){ return _Base::ref<2>(); }
- const _Body& body() const { return _Base::ref<2>(); }*/
-
- void parse(const ::std::string& s){
- char* p = (char*)s.c_str();
- char*& p2 = p;
- this->analyze(p2, *this);
- }
-
- /*::std::string generate() const {
- return lex_to_string(*this);
- }*/
- ::std::string to_string() const {
- return lex_to_string(*this);
- }
- };
- typedef uri_<> uri;
-
- ///////////////////////////////////////////////////////////
-
- // Syntax:
- // uri_authority_rule = [ userinfo "@" ] host [ ":" port ]
- template <typename _Host, typename _UserInfo=EmptyType, typename _Port=EmptyType>
- class uri_authority_rule : public ::roast::lexical::seq<
- _UserInfo, ::roast::lexical::chars::at, _Host, ::roast::lexical::chars::colon, _Port> {};
-
- // uri_authority_rule : _UserInfo is Empty
- template <typename _Host, typename _Port>
- class uri_authority_rule<_Host, EmptyType, _Port> : public ::roast::lexical::seq<
- /*_UserInfo, ::roast::lexical::chars::at,*/ _Host, ::roast::lexical::chars::colon, _Port> {};
-
- // uri_authority_rule : _Port is Empty
- template <typename _Host, typename _UserInfo>
- class uri_authority_rule<_Host, _UserInfo, EmptyType> : public ::roast::lexical::seq<
- _UserInfo, ::roast::lexical::chars::at, _Host/*, ::roast::lexical::chars::colon, _Port*/> {};
-
- // uri_authority_rule : _UserInfo, _Port is Empty
- template <typename _Host>
- class uri_authority_rule<_Host, EmptyType, EmptyType> : public _Host {};
-
- ///////////////////////////////////////////////////////////
-
- // URI with authority.
- typedef ::roast::lexical::seq<
- ::roast::lexical::chars::slash,
- ::roast::lexical::chars::slash>
- double_slash, dbl_slash, slashslash, slash_slash;
-
- template <typename _Scheme, typename _Authority, typename _Path>
- class uri_with_authority : public uri_<
- _Scheme, ::roast::lexical::seq< dbl_slash, _Authority, _Path> > {};
-
- ///////////////////////////////////////////////////////////
-
- template <typename _Host, typename _UserInfo, typename _Port>
- struct uri_any_authority
- {
- _UserInfo user;
- _Host host;
- _Port port_no;
-
- template <typename _Strm, typename _Document>
- bool generate(_Strm& strm, _Document& doc) const
- {
- if ( user == "" && port_no == 0 ){
- /*uri_authority_rule<_Host> r;
- r = host;
- return r.generate(strm, doc);*/
- return host.generate(strm, doc);
- }
-
- else if ( port_no == 0 ){
- uri_authority_rule<_Host, _UserInfo> r;
- _nest_type::ref<0>(r, _nest_type::_get_n<0>()) = user;
- _nest_type::ref<2>(r, _nest_type::_get_n<2>()) = host;
- return r.generate(strm, r);
- }
-
- else if ( user == "" ){
- uri_authority_rule<_Host, EmptyType, _Port> r;
- _nest_type::ref<0>(r, _nest_type::_get_n<0>()) = host;
- _nest_type::ref<2>(r, _nest_type::_get_n<2>()) = port_no;
- return r.generate(strm, r);
- }
-
- else {
- uri_authority_rule<_Host, _UserInfo, _Port> r;
- _nest_type::ref<0>(r, _nest_type::_get_n<0>()) = user;
- _nest_type::ref<2>(r, _nest_type::_get_n<2>()) = host;
- _nest_type::ref<4>(r, _nest_type::_get_n<4>()) = port_no;
- return r.generate(strm, r);
- }
- }
- };
- //
-
- template <
- typename _Scheme = lexical::string,
- typename _Host = lexical::string,
- typename _UserInfo = lexical::string,
- typename _Port = lexical::num_string,
- typename _Path = lexical::string
- >
- class uri_net_path_ : public uri_with_authority<_Scheme,
- // uri_authority_rule<_Host, _UserInfo, _Port>, _Path >
- uri_any_authority<_Host, _UserInfo, _Port>, _Path >
- {
- private:
- /*typedef uri_with_authority<_Scheme,
- uri_authority_rule<_Host, _UserInfo, _Port>, _Path > _Base;*/
- typedef uri_with_authority<_Scheme,
- uri_any_authority<_Host, _UserInfo, _Port>, _Path > _Base;
-
- //typedef uri_authority_rule<_Host, _UserInfo, _Port> _Authority;
- typedef uri_any_authority<_Host, _UserInfo, _Port> _Authority;
- typedef ::roast::lexical::seq< dbl_slash, _Authority, _Path> _Body;
-
- void _init_refs(){
- scheme = _nest_type::ref<0>(*this, _nest_type::_get_n<0>()); // for gcc compilable workaround...
-
- /////
- _Body& body = _nest_type::ref<2>(*this, _nest_type::_get_n<2>()); // for gcc compilable workaround...
-
- _Authority& authority = _nest_type::ref<1>(body, _nest_type::_get_n<1>()); // for gcc compilable workaround...
- host = authority.host;
- user = authority.user;
- port_no = authority.port_no;
-
- path = _nest_type::ref<2>(body, _nest_type::_get_n<2>()); // for gcc compilable workaround...
- }
-
- public:
- delay_ref<_Scheme> scheme;
- delay_ref<_UserInfo> user;
- delay_ref<_Host> host;
- delay_ref<_Port> port_no;
- delay_ref<_Path> path;
-
- public:
- uri_net_path_(){ _init_refs(); }
-
- uri_net_path_(const _Scheme& scheme_in, const _Host& host_in, const _Path& path_in="/"){
- _init_refs();
-
- scheme = scheme_in;
- host = host_in;
- path = path_in;
- }
- uri_net_path_(const _Scheme& scheme_in, const _Host& host_in, const _Path& path_in, const _UserInfo& username_in){
- _init_refs();
-
- scheme = scheme_in;
- host = host_in;
- path = path_in;
- user = username_in;
- }
- uri_net_path_(const _Scheme& scheme_in, const _Host& host_in, const _Path& path_in, const _Port& port_no_in){
- _init_refs();
-
- scheme = scheme_in;
- host = host_in;
- path = path_in;
- port_no = port_no_in;
- }
- uri_net_path_(const _Scheme& scheme_in, const _Host& host_in, const _Path& path_in, const _UserInfo& username_in, const _Port& port_no_in){
- _init_refs();
-
- scheme = scheme_in;
- host = host_in;
- path = path_in;
- user = username_in;
- port_no = port_no_in;
- }
- };
- typedef uri_net_path_<> uri_net_path;
-
- /////////////////////////
-
- template <
- typename _Scheme,
- typename _Host = lexical::string,
- typename _UserInfo = lexical::string,
- typename _Port = lexical::num_string,
- typename _Path = lexical::string
- >
- class uri_net_path_with_scheme : public uri_net_path_<_Scheme, _Host, _UserInfo, _Port, _Path>
- {
- private:
- typedef uri_net_path_<_Scheme, _Host, _UserInfo, _Port, _Path> _Base;
- public:
- uri_net_path_with_scheme(){}
- uri_net_path_with_scheme(const _Host& host_in, const _Path& path_in="/")
- : _Base(_Scheme(), host_in, path_in ) {}
- uri_net_path_with_scheme(const _Host& host_in, const _Path& path_in, const _UserInfo& username_in)
- : _Base(_Scheme(), host_in, path_in, username_in ) {}
- uri_net_path_with_scheme(const _Host& host_in, const _Path& path_in, const _Port& port_no_in)
- : _Base(_Scheme(), host_in, path_in, port_no_in ) {}
- uri_net_path_with_scheme(const _Host& host_in, const _Path& path_in, const _UserInfo& username_in, const _Port& port_no_in)
- : _Base(_Scheme(), host_in, path_in, username_in, port_no_in ) {}
- };
-
- ///////////////////////////////////////////////////////////////////////////
-}
-
-#include "roast/net/uri/scheme_name.hpp"
-
-#endif//__SFJP_ROAST__net__uri__uri_HPP__
+++ /dev/null
-// Roast+ License
-
-/*
-*/
-#ifndef __SFJP_ROAST__net__uri__url_HPP__
-#define __SFJP_ROAST__net__uri__url_HPP__
-
-#include "roast/net/uri/uri.hpp"
-#include <string>
-
-namespace roast
-{
- template <
- typename _Scheme,
- typename _Host = lexical::string,
- typename _UserInfo = lexical::string,
- typename _Port = lexical::num_string,
- typename _Path = lexical::string
- >
- class url : public uri_net_path_with_scheme<_Scheme, _Host, _UserInfo, _Port, _Path>
- {
- private:
- typedef uri_net_path_with_scheme<_Scheme, _Host, _UserInfo, _Port, _Path> _Base;
- public:
- url(){}
- url(const _Host& host_in, const _Path& path_in="/")
- : _Base(host_in, path_in ) {}
- url(const _Host& host_in, const _Path& path_in, const _UserInfo& username_in)
- : _Base(host_in, path_in, username_in ) {}
- url(const _Host& host_in, const _Path& path_in, const _Port& port_no_in)
- : _Base(host_in, path_in, port_no_in ) {}
- url(const _Host& host_in, const _Path& path_in, const _UserInfo& username_in, const _Port& port_no_in)
- : _Base(host_in, path_in, username_in, port_no_in ) {}
- };
-
- /*
- template <
- typename _Scheme,
- typename _Host = lexical::string,
- typename _UserInfo = lexical::string,
- typename _Port = lexical::num_string,
- typename _Path = lexical::string
- >
- class url : public uri_net_path_<_Scheme, _Host, _UserInfo, _Port, _Path>
- {
- public:
- url(){}
- url(const _Host& host_in, const _Path& path_in="/")
- : (_Scheme(), host_in, path_in ) {}
- url(const _Host& host_in, const _Path& path_in, const _UserInfo& username_in)
- : (_Scheme(), host_in, path_in, username_in ) {}
- url(const _Host& host_in, const _Path& path_in, const _Port& port_no_in)
- : (_Scheme(), host_in, path_in, port_no_in ) {}
- url(const _Host& host_in, const _Path& path_in, const _UserInfo& username_in, const _Port& port_no_in)
- : (_Scheme(), host_in, path_in, username_in, port_no_in ) {}
- };*/
-}
-
-#endif//__SFJP_ROAST__net__uri__url_HPP__
+++ /dev/null
-// Roast+ License
-
-/*
-*/
-#ifndef __SFJP_ROAST__roast__net__urlenc_HPP__
-#define __SFJP_ROAST__roast__net__urlenc_HPP__
-
-#include "roast/str/codec.hpp"
-#include <string>
-
-
-#define ROAST_CHAR_TO_HEXSTR(C,STR,HEXSTART) (\
- (STR)[0] = '0' + C / 16, \
- (STR)[0] > '9' ? (STR)[0] += (HEXSTART-'9'-1) : 0, \
- (STR)[1] = '0' + C % 16, \
- (STR)[1] > '9' ? (STR)[1] += (HEXSTART-'9'-1) : 0, \
- STR)
-
-namespace roast
-{
- template <bool _SpaceToPlus=true>
- class url_encode_impl
- {
- private:
- size_t m_wrote_length;
- public:
- typedef char _FromType;
- typedef char _ToType;
-
- url_encode_impl(const _FromType* from, _ToType* to, size_t rest_length)
- {
- unsigned char c = *from;
-
- switch(c)
- {
- case '.':
- case '-':
- case '_':
-
- // '0'-'9'
- case 48 :
- case 49 :
- case 50 :
- case 51 :
- case 52 :
- case 53 :
- case 54 :
- case 55 :
- case 56 :
- case 57 :
-
- // 'A'-'Z'
- case 65 :
- case 66 :
- case 67 :
- case 68 :
- case 69 :
- case 70 :
- case 71 :
- case 72 :
- case 73 :
- case 74 :
- case 75 :
- case 76 :
- case 77 :
- case 78 :
- case 79 :
- case 80 :
- case 81 :
- case 82 :
- case 83 :
- case 84 :
- case 85 :
- case 86 :
- case 87 :
- case 88 :
- case 89 :
-
- // 'a'-'z'
- case 97 :
- case 98 :
- case 99 :
- case 100 :
- case 101 :
- case 102 :
- case 103 :
- case 104 :
- case 105 :
- case 106 :
- case 107 :
- case 108 :
- case 109 :
- case 110 :
- case 111 :
- case 112 :
- case 113 :
- case 114 :
- case 115 :
- case 116 :
- case 117 :
- case 118 :
- case 119 :
- case 120 :
- case 121 :
- *to = c;
- m_wrote_length = 1;
- break;
-
- case ' ':
- if ( _SpaceToPlus )
- {
- *to = '+';
- m_wrote_length = 1;
- break;
- }
-
- default:
- to[0] = '%';
- /*char to1 = '0' + c / 16;
- if ( to1 > '9' )
- to1 + 'A';
- to[1] = to1;
- to[2] = '0' + c % 16;
- if ( to[1] > '*/
-
- ROAST_CHAR_TO_HEXSTR(c,to+1,'A');
-
- m_wrote_length = 3;
- break;
- }
- }
-
- size_t readed(){ return 1; }
- size_t wrote(){ return m_wrote_length; }
- };
- //typedef ::roast::simple_encoder_base<url_encode_impl> url_encode;
-
- //////////////////////////////////////////////////////////////////////
-
- template <bool _SpaceToPlus=true>
- class url_encode_ : public ::roast::simple_encoder_base<url_encode_impl<_SpaceToPlus>>
- {
- protected:
- ::std::string m_str;
- public:
- url_encode_(){}
- url_encode_(const char* from)
- {
- size_t from_len = strlen(from);
- m_str.resize(from_len*3 + 1);
-
- encode(from, from_len, (char*)m_str.data());
- }
-
- const char* c_str(){ return m_str.c_str(); }
- const char* get(){ return m_str.c_str(); }
- const char* get_result(){ return m_str.c_str(); }
- operator const char* (){ return m_str.c_str(); }
- };
- typedef url_encode_<> url_encode;
-}
-
-#endif//__SFJP_ROAST__roast__net__urlenc_HPP__
+++ /dev/null
-// Roast+ License
-
-/*
- Uniform Resource Identifier
-*/
-#ifndef __SFJP_ROAST__net__url_HPP__
-#define __SFJP_ROAST__net__url_HPP__
-
-#include "roast/net/uri/url.hpp"
-
-#endif//__SFJP_ROAST__net__url_HPP__