You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by jr...@apache.org on 2016/03/24 13:41:40 UTC
svn commit: r1736439 [18/49] - in /qpid/site:
docs/releases/qpid-proton-master/
docs/releases/qpid-proton-master/messenger/c/examples/
docs/releases/qpid-proton-master/messenger/perl/examples/
docs/releases/qpid-proton-master/messenger/php/examples/ do...
Modified: qpid/site/docs/releases/qpid-proton-master/proton/cpp/api/type__traits_8hpp_source.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-proton-master/proton/cpp/api/type__traits_8hpp_source.html?rev=1736439&r1=1736438&r2=1736439&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-proton-master/proton/cpp/api/type__traits_8hpp_source.html (original)
+++ qpid/site/docs/releases/qpid-proton-master/proton/cpp/api/type__traits_8hpp_source.html Thu Mar 24 12:41:32 2016
@@ -93,8 +93,8 @@ $(document).ready(function(){initNavTree
<div class="title">type_traits.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#ifndef TYPE_TRAITS_HPP</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define TYPE_TRAITS_HPP</span></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#ifndef PROTON_TYPE_TRAITS_HPP</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define PROTON_TYPE_TRAITS_HPP</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
@@ -117,186 +117,142 @@ $(document).ready(function(){initNavTree
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "proton/config.hpp"</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="types_8hpp.html">proton/types.hpp</a>"</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespaceproton.html">proton</a> {</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span>binary;</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>decimal128;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>decimal32;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>decimal64;</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>scalar;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span>symbol;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span>timestamp;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">class </span>uuid;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">class </span>value;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">class </span>decoder;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">class </span>encoder;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">template</span> <<span class="keywordtype">bool</span>, <span class="keyword">class</span> T=<span class="keywordtype">void</span>> <span class="keyword">struct </span>enable_if {};</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>enable_if<true, T> { <span class="keyword">typedef</span> T type; };</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">struct </span>true_type { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = <span class="keyword">true</span>; };</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">struct </span>false_type { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = <span class="keyword">false</span>; };</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>is_integral : <span class="keyword">public</span> false_type {};</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>is_signed : <span class="keyword">public</span> false_type {};</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<char> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<char> : <span class="keyword">public</span> false_type {};</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <proton/config.hpp></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code" href="types__fwd_8hpp.html">proton/types_fwd.hpp</a>></span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <proton/type_id.hpp></span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespaceproton.html">proton</a> {</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span>codec {</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>decoder;</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>encoder;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">template</span> <<span class="keywordtype">bool</span>, <span class="keyword">class</span> T=<span class="keywordtype">void</span>> <span class="keyword">struct </span>enable_if {};</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>enable_if<true, T> { <span class="keyword">typedef</span> T type; };</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">struct </span>true_type { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = <span class="keyword">true</span>; };</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">struct </span>false_type { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = <span class="keyword">false</span>; };</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>is_integral : <span class="keyword">public</span> false_type {};</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>is_signed : <span class="keyword">public</span> false_type {};</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<char> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<char> : <span class="keyword">public</span> false_type {};</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<unsigned char> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<unsigned short> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<unsigned int> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<unsigned long> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<signed char> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<signed short> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<signed int> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<signed long> : <span class="keyword">public</span> true_type {};</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<unsigned char> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<unsigned short> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<unsigned int> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<unsigned long> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<signed char> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<signed short> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<signed int> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<signed long> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<unsigned short> : <span class="keyword">public</span> false_type {};</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<unsigned int> : <span class="keyword">public</span> false_type {};</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<unsigned long> : <span class="keyword">public</span> false_type {};</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<signed char> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<signed short> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<signed int> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<signed long> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<unsigned short> : <span class="keyword">public</span> false_type {};</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<unsigned int> : <span class="keyword">public</span> false_type {};</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<unsigned long> : <span class="keyword">public</span> false_type {};</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<signed char> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<signed short> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<signed int> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<signed long> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#if PN_CPP_HAS_LONG_LONG</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<unsigned long long> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<signed long long> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<unsigned long long> : <span class="keyword">public</span> false_type {};</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<signed long long> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> U> <span class="keyword">struct </span>is_same { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value=<span class="keyword">false</span>; };</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>is_same<T,T> { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value=<span class="keyword">true</span>; };</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#if PN_CPP_HAS_LONG_LONG</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<unsigned long long> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_integral<signed long long> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<unsigned long long> : <span class="keyword">public</span> false_type {};</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_signed<signed long long> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> U> <span class="keyword">struct </span>is_same { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value=<span class="keyword">false</span>; };</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>is_same<T,T> { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value=<span class="keyword">true</span>; };</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">template</span>< <span class="keyword">class</span> T > <span class="keyword">struct </span>remove_const { <span class="keyword">typedef</span> T type; };</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="keyword">template</span>< <span class="keyword">class</span> T > <span class="keyword">struct </span>remove_const<const T> { <span class="keyword">typedef</span> T type; };</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">template</span> <type_<span class="keywordtype">id</span> ID> <span class="keyword">struct </span>type_id_constant { <span class="keyword">static</span> <span class="keyword">const</span> type_id value = ID; };</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// Metafunction returning AMQP type for scalar C++ types.</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> Enable=<span class="keywordtype">void</span>> <span class="keyword">struct </span>type_id_of;</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<bool> : <span class="keyword">public</span> type_id_constant<BOOLEAN> {};</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<uint8_t> : <span class="keyword">public</span> type_id_constant<UBYTE> {};</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<int8_t> : <span class="keyword">public</span> type_id_constant<BYTE> {};</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<uint16_t> : <span class="keyword">public</span> type_id_constant<USHORT> {};</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<int16_t> : <span class="keyword">public</span> type_id_constant<SHORT> {};</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<uint32_t> : <span class="keyword">public</span> type_id_constant<UINT> {};</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<int32_t> : <span class="keyword">public</span> type_id_constant<INT> {};</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<uint64_t> : <span class="keyword">public</span> type_id_constant<ULONG> {};</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<int64_t> : <span class="keyword">public</span> type_id_constant<LONG> {};</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<wchar_t> : <span class="keyword">public</span> type_id_constant<CHAR> {};</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<timestamp> : <span class="keyword">public</span> type_id_constant<TIMESTAMP> {};</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<float> : <span class="keyword">public</span> type_id_constant<FLOAT> {};</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<double> : <span class="keyword">public</span> type_id_constant<DOUBLE> {};</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<decimal32> : <span class="keyword">public</span> type_id_constant<DECIMAL32> {};</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<decimal64> : <span class="keyword">public</span> type_id_constant<DECIMAL64> {};</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<decimal128> : <span class="keyword">public</span> type_id_constant<DECIMAL128> {};</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<uuid> : <span class="keyword">public</span> type_id_constant<UUID> {};</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<binary> : <span class="keyword">public</span> type_id_constant<BINARY> {};</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<<a class="code" href="namespacestd.html">std</a>::string> : <span class="keyword">public</span> type_id_constant<STRING> {};</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<symbol> : <span class="keyword">public</span> type_id_constant<SYMBOL> {};</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<const char*> : <span class="keyword">public</span> type_id_constant<STRING> {};</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// Metafunction to test if a class has a type_id.</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> Enable=<span class="keywordtype">void</span>> <span class="keyword">struct </span>has_type_id : <span class="keyword">public</span> false_type {};</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>has_type_id<T, typename enable_if<!!type_id_of<T>::value>::type> : <span class="keyword">public</span> true_type {};</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// Map arbitrary integral types to known AMQP integral types.</span></div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="keyword">template</span><<span class="keywordtype">size_t</span> SIZE, <span class="keywordtype">bool</span> IS_SIGNED> <span class="keyword">struct </span>integer_type;</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<1, true> { <span class="keyword">typedef</span> int8_t type; };</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<2, true> { <span class="keyword">typedef</span> int16_t type; };</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<4, true> { <span class="keyword">typedef</span> int32_t type; };</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<8, true> { <span class="keyword">typedef</span> int64_t type; };</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<1, false> { <span class="keyword">typedef</span> uint8_t type; };</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<2, false> { <span class="keyword">typedef</span> uint16_t type; };</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<4, false> { <span class="keyword">typedef</span> uint32_t type; };</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<8, false> { <span class="keyword">typedef</span> uint64_t type; };</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// True if T is an integer type that does not have an explicit type_id.</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>is_unknown_integer {</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = !has_type_id<T>::value && is_integral<T>::value;</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> };</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="comment">// Types for SFINAE tests.</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="keyword">typedef</span> <span class="keywordtype">char</span> yes;</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword">typedef</span> <span class="keywordtype">double</span> no;</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keyword">struct </span>wildcard { wildcard(...); };</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="keyword">namespace </span>is_decodable_impl { <span class="comment">// Protected the world from wildcard operator<<</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> no operator>>(wildcard, wildcard); <span class="comment">// Fallback</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">struct </span>is_decodable {</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">static</span> <span class="keywordtype">char</span> test(decoder);</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">static</span> <span class="keywordtype">double</span> test(...); <span class="comment">// Failed test, no match.</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">static</span> decoder& d;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">static</span> T &t;</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> value = (<span class="keyword">sizeof</span>(test(d >> t)) == <span class="keyword">sizeof</span>(yes));</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> };</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> } <span class="comment">// namespace is_decodable_impl</span></div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="keyword">namespace </span>is_encodable_impl { <span class="comment">// Protected the world from wildcard operator<<</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> no operator<<(wildcard, wildcard); <span class="comment">// Fallback</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">struct </span>is_encodable {</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">static</span> yes test(encoder);</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">static</span> no test(...); <span class="comment">// Failed test, no match.</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">static</span> encoder &e;</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">static</span> <span class="keyword">const</span> T& t;</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> value = <span class="keyword">sizeof</span>(test(e << t)) == <span class="keyword">sizeof</span>(yes);</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> };</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> } <span class="comment">// namespace is_encodable_impl</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">using</span> is_encodable_impl::is_encodable;</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">using</span> is_decodable_impl::is_decodable;</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="comment">// Start encoding a complex type.</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">struct </span>start {</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  PN_CPP_EXTERN start(type_id type=NULL_TYPE, type_id element=NULL_TYPE, <span class="keywordtype">bool</span> described=<span class="keyword">false</span>, <span class="keywordtype">size_t</span> size=0);</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  type_id type; </div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  type_id element; </div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordtype">bool</span> is_described; </div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordtype">size_t</span> size; </div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  PN_CPP_EXTERN <span class="keyword">static</span> start array(type_id element, <span class="keywordtype">bool</span> described=<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  PN_CPP_EXTERN <span class="keyword">static</span> start list();</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  PN_CPP_EXTERN <span class="keyword">static</span> start map();</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  PN_CPP_EXTERN <span class="keyword">static</span> start described();</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> };</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">struct </span>finish {};</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> } <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keyword">template</span><<span class="keyword">class</span> T, <span class="keyword">class</span> U=<span class="keywordtype">void</span>> <span class="keyword">struct </span>enable_amqp_type :</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keyword">public</span> internal::enable_if<internal::is_encodable<T>::value, U> {};</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> U=<span class="keywordtype">void</span>> <span class="keyword">struct </span>enable_integer :</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">public</span> internal::enable_if<internal::is_unknown_integer<T>::value, U> {};</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> } <span class="comment">// namespace proton</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor">#endif // TYPE_TRAITS_HPP</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">template</span>< <span class="keyword">class</span> T > <span class="keyword">struct </span>remove_const { <span class="keyword">typedef</span> T type; };</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">template</span>< <span class="keyword">class</span> T > <span class="keyword">struct </span>remove_const<const T> { <span class="keyword">typedef</span> T type; };</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">template</span> <type_<span class="keywordtype">id</span> ID> <span class="keyword">struct </span>type_id_constant { <span class="keyword">static</span> <span class="keyword">const</span> type_id value = ID; };</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// Metafunction returning AMQP type for scalar C++ types.</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> Enable=<span class="keywordtype">void</span>> <span class="keyword">struct </span>type_id_of;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<bool> : <span class="keyword">public</span> type_id_constant<BOOLEAN> {};</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<uint8_t> : <span class="keyword">public</span> type_id_constant<UBYTE> {};</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<int8_t> : <span class="keyword">public</span> type_id_constant<BYTE> {};</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<uint16_t> : <span class="keyword">public</span> type_id_constant<USHORT> {};</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<int16_t> : <span class="keyword">public</span> type_id_constant<SHORT> {};</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<uint32_t> : <span class="keyword">public</span> type_id_constant<UINT> {};</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<int32_t> : <span class="keyword">public</span> type_id_constant<INT> {};</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<uint64_t> : <span class="keyword">public</span> type_id_constant<ULONG> {};</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<int64_t> : <span class="keyword">public</span> type_id_constant<LONG> {};</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<wchar_t> : <span class="keyword">public</span> type_id_constant<CHAR> {};</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<timestamp> : <span class="keyword">public</span> type_id_constant<TIMESTAMP> {};</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<float> : <span class="keyword">public</span> type_id_constant<FLOAT> {};</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<double> : <span class="keyword">public</span> type_id_constant<DOUBLE> {};</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<decimal32> : <span class="keyword">public</span> type_id_constant<DECIMAL32> {};</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<decimal64> : <span class="keyword">public</span> type_id_constant<DECIMAL64> {};</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<decimal128> : <span class="keyword">public</span> type_id_constant<DECIMAL128> {};</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<uuid> : <span class="keyword">public</span> type_id_constant<UUID> {};</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<binary> : <span class="keyword">public</span> type_id_constant<BINARY> {};</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<<a class="code" href="namespacestd.html">std</a>::string> : <span class="keyword">public</span> type_id_constant<STRING> {};</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<symbol> : <span class="keyword">public</span> type_id_constant<SYMBOL> {};</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">template</span><> <span class="keyword">struct </span>type_id_of<const char*> : <span class="keyword">public</span> type_id_constant<STRING> {};</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// Metafunction to test if a class has a type_id.</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> Enable=<span class="keywordtype">void</span>> <span class="keyword">struct </span>has_type_id : <span class="keyword">public</span> false_type {};</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>has_type_id<T, typename enable_if<!!type_id_of<T>::value>::type> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// Map arbitrary integral types to known AMQP integral types.</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="keyword">template</span><<span class="keywordtype">size_t</span> SIZE, <span class="keywordtype">bool</span> IS_SIGNED> <span class="keyword">struct </span>integer_type;</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<1, true> { <span class="keyword">typedef</span> int8_t type; };</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<2, true> { <span class="keyword">typedef</span> int16_t type; };</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<4, true> { <span class="keyword">typedef</span> int32_t type; };</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<8, true> { <span class="keyword">typedef</span> int64_t type; };</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<1, false> { <span class="keyword">typedef</span> uint8_t type; };</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<2, false> { <span class="keyword">typedef</span> uint16_t type; };</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<4, false> { <span class="keyword">typedef</span> uint32_t type; };</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">template</span><> <span class="keyword">struct </span>integer_type<8, false> { <span class="keyword">typedef</span> uint64_t type; };</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">// True if T is an integer type that does not have an explicit type_id.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">struct </span>is_unknown_integer {</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = !has_type_id<T>::value && is_integral<T>::value;</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> };</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keyword">namespace </span>is_encodable_impl { <span class="comment">// Protected the world from wildcard operator<<</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">typedef</span> <span class="keywordtype">char</span> yes;</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keyword">typedef</span> <span class="keywordtype">double</span> no;</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keyword">struct </span>wildcard { wildcard(...); };</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> no operator<<(wildcard, wildcard); <span class="comment">// Fallback</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">struct </span>is_encodable {</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">static</span> yes test(encoder);</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">static</span> no test(...); <span class="comment">// Failed test, no match.</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">static</span> encoder &e;</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">static</span> <span class="keyword">const</span> T& t;</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> value = <span class="keyword">sizeof</span>(test(e << t)) == <span class="keyword">sizeof</span>(yes);</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> };</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment">// Avoid recursion</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keyword">template</span> <> <span class="keyword">struct </span>is_encodable<value> : <span class="keyword">public</span> true_type {};</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> } <span class="comment">// namespace is_encodable_impl</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">using</span> is_encodable_impl::is_encodable;</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="keyword">template</span><<span class="keyword">class</span> T, <span class="keyword">class</span> U=<span class="keywordtype">void</span>> <span class="keyword">struct </span>enable_amqp_type :</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">public</span> enable_if<is_encodable<T>::value, U> {};</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="keyword">template</span><<span class="keyword">class</span> T, <span class="keyword">class</span> U=<span class="keywordtype">void</span>> <span class="keyword">struct </span>assignable : enable_amqp_type<T, U> {};</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="keyword">template</span><<span class="keyword">class</span> U> <span class="keyword">struct </span>assignable<value, U> : <span class="keyword">public</span> false_type {};</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> U=<span class="keywordtype">void</span>> <span class="keyword">struct </span>enable_unknown_integer :</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">public</span> enable_if<is_unknown_integer<T>::value, U> {};</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> } <span class="comment">// internal</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> } <span class="comment">// proton</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#endif // PROTON_TYPE_TRAITS_HPP</span></div>
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdoc">STL namespace. </div></div>
-<div class="ttc" id="types_8hpp_html"><div class="ttname"><a href="types_8hpp.html">types.hpp</a></div><div class="ttdoc">Defines C++ types representing AMQP types. </div></div>
+<div class="ttc" id="types__fwd_8hpp_html"><div class="ttname"><a href="types__fwd_8hpp.html">types_fwd.hpp</a></div><div class="ttdoc">Forward declarations for all the C++ types used by proton to represent AMQP types. </div></div>
<div class="ttc" id="namespaceproton_html"><div class="ttname"><a href="namespaceproton.html">proton</a></div><div class="ttdef"><b>Definition:</b> acceptor.hpp:31</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
Modified: qpid/site/docs/releases/qpid-proton-master/proton/cpp/api/types_8hpp.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-proton-master/proton/cpp/api/types_8hpp.html?rev=1736439&r1=1736438&r2=1736439&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-proton-master/proton/cpp/api/types_8hpp.html (original)
+++ qpid/site/docs/releases/qpid-proton-master/proton/cpp/api/types_8hpp.html Thu Mar 24 12:41:32 2016
@@ -89,130 +89,34 @@ $(document).ready(function(){initNavTree
</div>
<div class="header">
- <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#enum-members">Enumerations</a> |
-<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">types.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
-<p>Defines C++ types representing AMQP types.
+<p>Include the definitions of all proton types used to represent AMQP types.
<a href="#details">More...</a></p>
-<div class="textblock"><code>#include "proton/export.hpp"</code><br />
-<code>#include "proton/error.hpp"</code><br />
-<code>#include <proton/codec.h></code><br />
-<code>#include <proton/type_compat.h></code><br />
-<code>#include <algorithm></code><br />
-<code>#include <bitset></code><br />
-<code>#include <string></code><br />
-<code>#include <memory.h></code><br />
+<div class="textblock"><code>#include <proton/binary.hpp></code><br />
+<code>#include <proton/config.hpp></code><br />
+<code>#include <proton/decimal.hpp></code><br />
+<code>#include <proton/deque.hpp></code><br />
+<code>#include <proton/duration.hpp></code><br />
+<code>#include <proton/list.hpp></code><br />
+<code>#include <proton/map.hpp></code><br />
+<code>#include <proton/scalar.hpp></code><br />
+<code>#include <proton/symbol.hpp></code><br />
+<code>#include <proton/timestamp.hpp></code><br />
+<code>#include <<a class="el" href="types__fwd_8hpp_source.html">proton/types_fwd.hpp</a>></code><br />
+<code>#include <proton/uuid.hpp></code><br />
+<code>#include <proton/value.hpp></code><br />
+<code>#include <proton/vector.hpp></code><br />
+<code>#include <proton/annotation_key.hpp></code><br />
+<code>#include <proton/message_id.hpp></code><br />
</div>
<p><a href="types_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structproton_1_1amqp__string.html">amqp_string</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">AMQP UTF-8 encoded string. <a href="structproton_1_1amqp__string.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structproton_1_1amqp__symbol.html">amqp_symbol</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">AMQP ASCII encoded symbolic name. <a href="structproton_1_1amqp__symbol.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structproton_1_1amqp__binary.html">amqp_binary</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">AMQP variable-length binary data. <a href="structproton_1_1amqp__binary.html#details">More...</a><br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr class="memitem:a83c2656d467d69eb49725c18f5aa13a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83c2656d467d69eb49725c18f5aa13a9"></a>enum  </td><td class="memItemRight" valign="bottom"><b>type_id</b> { <br />
-  <b>NULL_TYPE</b>,
-<b>BOOLEAN</b>,
-<b>UBYTE</b>,
-<b>BYTE</b>,
-<br />
-  <b>USHORT</b>,
-<b>SHORT</b>,
-<b>UINT</b>,
-<b>INT</b>,
-<br />
-  <b>CHAR</b>,
-<b>ULONG</b>,
-<b>LONG</b>,
-<b>TIMESTAMP</b>,
-<br />
-  <b>FLOAT</b>,
-<b>DOUBLE</b>,
-<b>DECIMAL32</b>,
-<b>DECIMAL64</b>,
-<br />
-  <b>DECIMAL128</b>,
-<b>UUID</b>,
-<b>BINARY</b>,
-<b>STRING</b>,
-<br />
-  <b>SYMBOL</b>,
-<b>DESCRIBED</b>,
-<b>ARRAY</b>,
-<b>LIST</b>,
-<br />
-  <b>MAP</b>
-<br />
- }<tr class="memdesc:a83c2656d467d69eb49725c18f5aa13a9"><td class="mdescLeft"> </td><td class="mdescRight">An identifier for AMQP types. <br /></td></tr>
-<tr class="separator:a83c2656d467d69eb49725c18f5aa13a9"><td class="memSeparator" colspan="2"> </td></tr>
-</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a777b2887e8ee3a66e56ca9468007b586"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a777b2887e8ee3a66e56ca9468007b586"></a>
-std::string </td><td class="memItemRight" valign="bottom"><b>type_name</b> (type_id)</td></tr>
-<tr class="memdesc:a777b2887e8ee3a66e56ca9468007b586"><td class="mdescLeft"> </td><td class="mdescRight">Get the name of the AMQP type. <br /></td></tr>
-<tr class="separator:a777b2887e8ee3a66e56ca9468007b586"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab66d1f0ed892a0f0c7192b8092d4ff15"><td class="memItemLeft" align="right" valign="top">std::ostream & </td><td class="memItemRight" valign="bottom"><b>operator<<</b> (std::ostream &, type_id)</td></tr>
-<tr class="memdesc:ab66d1f0ed892a0f0c7192b8092d4ff15"><td class="mdescLeft"> </td><td class="mdescRight">Print the type name. <a href="namespaceproton.html#ab66d1f0ed892a0f0c7192b8092d4ff15">More...</a><br /></td></tr>
-<tr class="separator:ab66d1f0ed892a0f0c7192b8092d4ff15"><td class="memSeparator" colspan="2"> </td></tr>
-<tr><td colspan="2"><div class="groupHeader">Type test functions</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p>Attributes of a type_id value, returns same result as the corresponding std::type_traits tests for the corresponding C++ types. </p>
-</div></td></tr>
-<tr class="memitem:a11a47938601e791c922c4be4ca0d026b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11a47938601e791c922c4be4ca0d026b"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>type_id_is_scalar</b> (type_id)</td></tr>
-<tr class="memdesc:a11a47938601e791c922c4be4ca0d026b"><td class="mdescLeft"> </td><td class="mdescRight">Any scalar type. <br /></td></tr>
-<tr class="separator:a11a47938601e791c922c4be4ca0d026b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6ab655358407f94bdc47075e5494c90a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ab655358407f94bdc47075e5494c90a"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>type_id_is_signed_int</b> (type_id)</td></tr>
-<tr class="memdesc:a6ab655358407f94bdc47075e5494c90a"><td class="mdescLeft"> </td><td class="mdescRight">One of the signed integer types: BYTE, SHORT, INT or LONG. <br /></td></tr>
-<tr class="separator:a6ab655358407f94bdc47075e5494c90a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a874686e7483db8ad384ace0c7a896fe6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a874686e7483db8ad384ace0c7a896fe6"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>type_id_is_unsigned_int</b> (type_id)</td></tr>
-<tr class="memdesc:a874686e7483db8ad384ace0c7a896fe6"><td class="mdescLeft"> </td><td class="mdescRight">One of the unsigned integer types: UBYTE, USHORT, UINT or ULONG. <br /></td></tr>
-<tr class="separator:a874686e7483db8ad384ace0c7a896fe6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0bb748941169c9fc7d95b3a11f89a6d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bb748941169c9fc7d95b3a11f89a6d5"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>type_id_is_integral</b> (type_id)</td></tr>
-<tr class="memdesc:a0bb748941169c9fc7d95b3a11f89a6d5"><td class="mdescLeft"> </td><td class="mdescRight">Any of the signed or unsigned integers, BOOL, CHAR or TIMESTAMP. <br /></td></tr>
-<tr class="separator:a0bb748941169c9fc7d95b3a11f89a6d5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acde40b9efbc1f6324bc0f371a1138070"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acde40b9efbc1f6324bc0f371a1138070"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>type_id_is_floating_point</b> (type_id)</td></tr>
-<tr class="memdesc:acde40b9efbc1f6324bc0f371a1138070"><td class="mdescLeft"> </td><td class="mdescRight">A floating point type, float or double. <br /></td></tr>
-<tr class="separator:acde40b9efbc1f6324bc0f371a1138070"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a13ed589c553eeeaf10dc205446633f05"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13ed589c553eeeaf10dc205446633f05"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>type_id_is_signed</b> (type_id)</td></tr>
-<tr class="memdesc:a13ed589c553eeeaf10dc205446633f05"><td class="mdescLeft"> </td><td class="mdescRight">Any signed integer, float or double. BOOL, CHAR and TIMESTAMP are not signed. <br /></td></tr>
-<tr class="separator:a13ed589c553eeeaf10dc205446633f05"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a94448cfda0117d2db415e0995561c542"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94448cfda0117d2db415e0995561c542"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>type_id_is_decimal</b> (type_id)</td></tr>
-<tr class="memdesc:a94448cfda0117d2db415e0995561c542"><td class="mdescLeft"> </td><td class="mdescRight">Any DECIMAL type. <br /></td></tr>
-<tr class="separator:a94448cfda0117d2db415e0995561c542"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a209009aae46f15f61e82a8c82ad78365"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a209009aae46f15f61e82a8c82ad78365"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>type_id_is_string_like</b> (type_id)</td></tr>
-<tr class="memdesc:a209009aae46f15f61e82a8c82ad78365"><td class="mdescLeft"> </td><td class="mdescRight">STRING, SYMBOL or BINARY. <br /></td></tr>
-<tr class="separator:a209009aae46f15f61e82a8c82ad78365"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aac605d6f5c6592b3fefe8eafa5c146d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac605d6f5c6592b3fefe8eafa5c146d9"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>type_id_is_container</b> (type_id)</td></tr>
-<tr class="memdesc:aac605d6f5c6592b3fefe8eafa5c146d9"><td class="mdescLeft"> </td><td class="mdescRight">Container types: MAP, LIST, ARRAY or DESCRIBED. <br /></td></tr>
-<tr class="separator:aac605d6f5c6592b3fefe8eafa5c146d9"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Defines C++ types representing AMQP types. </p>
+<div class="textblock"><p>Include the definitions of all proton types used to represent AMQP types. </p>
+<p>Provided for convenience, you can include types individually instead. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org