|
| 1 | +[/ |
| 2 | + (C) Copyright 2010 Glyn Matthews. |
| 3 | + Distributed under the Boost Software License, Version 1.0. |
| 4 | + (See accompanying file LICENSE_1_0.txt or copy at |
| 5 | + http://www.boost.org/LICENSE_1_0.txt). |
| 6 | +] |
| 7 | + |
| 8 | +[section:appendix_1 Appendix 1: Message Concepts] |
| 9 | + |
| 10 | +[section:message_concept Message] |
| 11 | + |
| 12 | +__message__ is |
| 13 | +[@http://www.boost.org/doc/html/DefaultConstructible.html |
| 14 | +DefaultConstructible], |
| 15 | +[@http://www.boost.org/doc/html/CopyConstructible.html |
| 16 | +CopyConstructible] and [@http://www.boost.org/doc/html/Assignable.html |
| 17 | +Assignable]. |
| 18 | + |
| 19 | +[heading Description] |
| 20 | + |
| 21 | +A type models the URI Concept if the type adheres to the following |
| 22 | +usage semantics, and is DefaultConstructible and EqualityComparable. |
| 23 | + |
| 24 | +[variablelist Notation |
| 25 | + [[`M`] [A Message Type.]] |
| 26 | + [[`m`, `m_`] [A Message Type instance.]] |
| 27 | + [[`S`] [A String Type.]] |
| 28 | + [[`s`] [A String Type instance.]] |
| 29 | + [[`O`] [An Ostringstream Type.]] |
| 30 | + [[`o`] [An Ostringstream Type instance.]] |
| 31 | + [[`C`] [A Header Container Type.]] |
| 32 | + [[`c`] [A Header Container Type instance.]] |
| 33 | +] |
| 34 | + |
| 35 | +[heading Valid Expressions] |
| 36 | + |
| 37 | +[table |
| 38 | + [[Expression] [Return Type] [Description]] |
| 39 | + [[`M m_(m);`] [] [M must be Copy constructible.]] |
| 40 | + [[`M m_; m_ = m;`] [] [M must be Assignable.]] |
| 41 | + [[`swap(m, m_);`] [void] [Swap should be availabe via ADL.]] |
| 42 | + [[`M::string_type`] [S] [M should have a nested type `string_type` of type `S`.]] |
| 43 | + [[`M::headers_container_type`] [C] [M should have a nested type `headers_container_type` of type `C`.]] |
| 44 | +] |
| 45 | + |
| 46 | + |
| 47 | +[endsect] [/message_concept] |
| 48 | + |
| 49 | +[endsect] [/appendix_1] |
| 50 | + |
| 51 | +[section:appendix_2 Appendix 2: URI Concepts] |
| 52 | + |
| 53 | +This page describes the URI Concepts implemented within cpp-netlib. |
| 54 | +The following concepts are also implemented as Boost.Concept_check |
| 55 | +types enforced by the URI library. |
| 56 | + |
| 57 | +URI Concepts are organized into a hierarchy of conepts. |
| 58 | + |
| 59 | +[section:uri_concept URI] |
| 60 | + |
| 61 | +[heading Description] |
| 62 | + |
| 63 | +A type models the URI Concept if the type adheres to the following |
| 64 | +usage semantics, and is DefaultConstructible and EqualityComparable. |
| 65 | + |
| 66 | +[variablelist Notation |
| 67 | + [[`U`] [A URI Type.]] |
| 68 | + [[`u`, `u_`] [A URI Type instance.]] |
| 69 | + [[`S`] [A String Type.]] |
| 70 | + [[`s`] [A String Type instance.]] |
| 71 | +] |
| 72 | + |
| 73 | +[heading Valid Expressions] |
| 74 | + |
| 75 | +For any URI, the following expressions must be valid: |
| 76 | + |
| 77 | +[table |
| 78 | + [[Expression] [Return Type] [Description]] |
| 79 | + [[`U u_(u)`;] [] [U must be Copy constructible.]] |
| 80 | + [[`U u_; u_ = u;`] [] [U must be Assignable.]] |
| 81 | + [[`U u_(s)`;] [] [U can be constructed from a string `s`.]] |
| 82 | + [[`swap(u, u_);`] [void] [Swap should be availabe via ADL.]] |
| 83 | + [[`protocol(u);`] [S] [Return the protocol part of the URI.]] |
| 84 | + [[`rest(u);`] [S] [Return the rest of the URI, excluding the protocol part.]] |
| 85 | + [[`valid(u);`] [bool] [Return true whether the URI is a valid URI.]] |
| 86 | + [[`U::string_type`] [S] [U should have a nested type `string_type` of type `S`.]] |
| 87 | +] |
| 88 | + |
| 89 | +[endsect] [/uri_concept] |
| 90 | + |
| 91 | +[section:http_uri HTTP URI] |
| 92 | + |
| 93 | +A type models the HTTP URI Concept if the type adheres to the following |
| 94 | +usage semantics, and if the type also models the URI Concept. |
| 95 | + |
| 96 | +[variablelist Notation |
| 97 | + [[`H`] [An HTTP URI Type.]] |
| 98 | + [[`h`,`h_`] [An HTTP URI Type instance.]] |
| 99 | + [[`S`] [A String Type.]] |
| 100 | + [[`s`] [A String Type instance.]] |
| 101 | +] |
| 102 | + |
| 103 | +[heading Valid Expressions] |
| 104 | + |
| 105 | +For any HTTP URI, the following expressions must be valid: |
| 106 | + |
| 107 | +[table |
| 108 | + [[Expression] [Return Type] [Description]] |
| 109 | + [[`user_info(h)`] [S] [Retrieve the user-info part of the HTTP URI.]] |
| 110 | + [[`host(h)`] [S] [Retrieve the host part of the HTTP URI.]] |
| 111 | + [[`port(h)`] [uint16_t] [Retrieve the port part of the HTTP URI.]] |
| 112 | + [[`path(h)`] [S] [Retrieve the path part of the HTTP URI.]] |
| 113 | + [[`query(h)`] [S] [Retrieve the query part of the HTTP URI.]] |
| 114 | + [[`fragment(h)`][S] [Retrieve the fragment part of the HTTP URI.]] |
| 115 | +] |
| 116 | + |
| 117 | +[endsect] [/http_uri] |
| 118 | + |
| 119 | +[endsect] [/appendix_2] |
0 commit comments