mirror of
https://github.com/seigler/dash-docs
synced 2025-07-27 17:56:16 +00:00
165 lines
221 KiB
HTML
165 lines
221 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.14"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>Dash Core: src/tinyformat.h Source File</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(document).ready(initResizable);
|
|
/* @license-end */</script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectlogo"><img alt="Logo" src="bitcoin_logo_doxygen.png"/></td>
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">Dash Core
|
|
 <span id="projectnumber">0.12.2.1</span>
|
|
</div>
|
|
<div id="projectbrief">P2P Digital Currency</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.14 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
/* @license-end */</script>
|
|
<div id="main-nav"></div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(document).ready(function(){initNavTree('tinyformat_8h_source.html','');});
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">tinyformat.h</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a href="tinyformat_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// tinyformat.h</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Copyright (C) 2011, Chris Foster [chris42f (at) gmail (d0t) com]</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">//</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Boost Software License - Version 1.0</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// Permission is hereby granted, free of charge, to any person or organization</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// obtaining a copy of the software and accompanying documentation covered by</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// this license (the "Software") to use, reproduce, display, distribute,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// execute, and transmit the Software, and to prepare derivative works of the</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Software, and to permit third-parties to whom the Software is furnished to</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// do so, all subject to the following:</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">//</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// The copyright notices in the Software and this entire statement, including</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// the above license grant, this restriction and the following disclaimer,</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// must be included in all copies of the Software, in whole or in part, and</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// all derivative works of the Software, unless such copies or derivative</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// works are solely in the form of machine-executable object code generated by</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// a source language processor.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">//</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// DEALINGS IN THE SOFTWARE.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">//------------------------------------------------------------------------------</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Tinyformat: A minimal type safe printf replacement</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">//</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// tinyformat.h is a type safe printf replacement library in a single C++</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// header file. Design goals include:</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">//</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// * Type safety and extensibility for user defined types.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// * C99 printf() compatibility, to the extent possible using std::ostream</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// * Simplicity and minimalism. A single header file to include and distribute</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// with your projects.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// * Augment rather than replace the standard stream formatting mechanism</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// * C++98 support, with optional C++11 niceties</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">//</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">//</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// Main interface example usage</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// ----------------------------</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// To print a date to std::cout:</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">//</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// std::string weekday = "Wednesday";</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// const char* month = "July";</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// size_t day = 27;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// long hour = 14;</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// int min = 44;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">//</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// tfm::printf("%s, %s %d, %.2d:%.2d\n", weekday, month, day, hour, min);</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">//</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// The strange types here emphasize the type safety of the interface; it is</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// possible to print a std::string using the "%s" conversion, and a</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// size_t using the "%d" conversion. A similar result could be achieved</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// using either of the tfm::format() functions. One prints on a user provided</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// stream:</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">//</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// tfm::format(std::cerr, "%s, %s %d, %.2d:%.2d\n",</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// weekday, month, day, hour, min);</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">//</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// The other returns a std::string:</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">//</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// std::string date = tfm::format("%s, %s %d, %.2d:%.2d\n",</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// weekday, month, day, hour, min);</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// std::cout << date;</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">//</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// These are the three primary interface functions.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">//</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// User defined format functions</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// -----------------------------</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">//</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// Simulating variadic templates in C++98 is pretty painful since it requires</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// writing out the same function for each desired number of arguments. To make</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// this bearable tinyformat comes with a set of macros which are used</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// internally to generate the API, but which may also be used in user code.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">//</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// The three macros TINYFORMAT_ARGTYPES(n), TINYFORMAT_VARARGS(n) and</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// TINYFORMAT_PASSARGS(n) will generate a list of n argument types,</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// type/name pairs and argument names respectively when called with an integer</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// n between 1 and 16. We can use these to define a macro which generates the</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// desired user defined function with n arguments. To generate all 16 user</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// defined function bodies, use the macro TINYFORMAT_FOREACH_ARGNUM. For an</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// example, see the implementation of printf() at the end of the source file.</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">//</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">//</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// Additional API information</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// --------------------------</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">//</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// Error handling: Define TINYFORMAT_ERROR to customize the error handling for</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// format strings which are unsupported or have the wrong number of format</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// specifiers (calls assert() by default).</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">//</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// User defined types: Uses operator<< for user defined types by default.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// Overload formatValue() for more control.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#ifndef TINYFORMAT_H_INCLUDED</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#define TINYFORMAT_H_INCLUDED</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="namespacetinyformat.html"> 104</a></span> <span class="keyword">namespace </span><a class="code" href="namespacetinyformat.html">tinyformat</a> {}</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">//------------------------------------------------------------------------------</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// Config section. Customize to your liking!</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// Namespace alias to encourage brevity</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keyword">namespace </span><a class="code" href="namespacetinyformat.html">tfm</a> = <a class="code" href="namespacetinyformat.html">tinyformat</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// Error handling; calls assert() by default.</span></div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#aab516d7d4e92fe18eca4a9d40f450a80"> 112</a></span> <span class="preprocessor">#define TINYFORMAT_ERROR(reasonString) throw std::runtime_error(reasonString)</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// Define for C++11 variadic templates which make the code shorter & more</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// general. If you don't define this, C++11 support is autodetected below.</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// #define TINYFORMAT_USE_VARIADIC_TEMPLATES</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment">//------------------------------------------------------------------------------</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment">// Implementation details.</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">#include <cassert></span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#include <stdexcept></span></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="preprocessor">#ifndef TINYFORMAT_ERROR</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor"># define TINYFORMAT_ERROR(reason) assert(0 && reason)</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#if !defined(TINYFORMAT_USE_VARIADIC_TEMPLATES) && !defined(TINYFORMAT_NO_VARIADIC_TEMPLATES)</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor"># ifdef __GXX_EXPERIMENTAL_CXX0X__</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor"># define TINYFORMAT_USE_VARIADIC_TEMPLATES</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor"># define TINYFORMAT_NOINLINE __attribute__((noinline))</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">#elif defined(_MSC_VER)</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor"># define TINYFORMAT_NOINLINE __declspec(noinline)</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a6aa2353acc671b972658fd73a813b960"> 141</a></span> <span class="preprocessor"># define TINYFORMAT_NOINLINE</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#if defined(__GLIBCXX__) && __GLIBCXX__ < 20080201</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// std::showpos is broken on old libstdc++ as provided with OSX. See</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// http://gcc.gnu.org/ml/libstdc++/2007-11/msg00075.html</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor"># define TINYFORMAT_OLD_LIBSTDCPLUSPLUS_WORKAROUND</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#endif</span></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="keyword">namespace </span><a class="code" href="namespacetinyformat.html">tinyformat</a> {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment">//------------------------------------------------------------------------------</span></div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="namespacetinyformat_1_1detail.html"> 153</a></span> <span class="keyword">namespace </span>detail {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment">// Test whether type T1 is convertible to type T2</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2></div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1is__convertible.html"> 157</a></span> <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1is__convertible.html">is_convertible</a></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// two types of different size</span></div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1is__convertible_1_1fail.html#a5d18f7fcac212bbe55692586aee8954d"> 161</a></span>  <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1is__convertible_1_1fail.html">fail</a> { <span class="keywordtype">char</span> <a class="code" href="structtinyformat_1_1detail_1_1is__convertible_1_1fail.html#a5d18f7fcac212bbe55692586aee8954d">dummy</a>[2]; };</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1is__convertible_1_1succeed.html#a7f25789e5f4b4d4fbc8999f9f096cbf6"> 162</a></span>  <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1is__convertible_1_1succeed.html">succeed</a> { <span class="keywordtype">char</span> <a class="code" href="structtinyformat_1_1detail_1_1is__convertible_1_1succeed.html#a7f25789e5f4b4d4fbc8999f9f096cbf6">dummy</a>; };</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// Try to convert a T1 to a T2 by plugging into tryConvert</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">static</span> <a class="code" href="structtinyformat_1_1detail_1_1is__convertible_1_1fail.html">fail</a> <a class="code" href="structtinyformat_1_1detail_1_1is__convertible.html#a304a3fb17a674e61c688dd1219875870">tryConvert</a>(...);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">static</span> <a class="code" href="structtinyformat_1_1detail_1_1is__convertible_1_1succeed.html">succeed</a> <a class="code" href="structtinyformat_1_1detail_1_1is__convertible.html#a304a3fb17a674e61c688dd1219875870">tryConvert</a>(<span class="keyword">const</span> T2&);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">static</span> <span class="keyword">const</span> T1& <a class="code" href="structtinyformat_1_1detail_1_1is__convertible.html#af2068cf5629a702c9ccb3b8136c6fe2e">makeT1</a>();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor"># ifdef _MSC_VER</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// Disable spurious loss of precision warnings in tryConvert(makeT1())</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor"># pragma warning(push)</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor"># pragma warning(disable:4244)</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor"># pragma warning(disable:4267)</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// Standard trick: the (...) version of tryConvert will be chosen from</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// the overload set only if the version taking a T2 doesn't match.</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="comment">// Then we compare the sizes of the return types to check which</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// function matched. Very neat, in a disgusting kind of way :)</span></div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1is__convertible.html#a399ca4333bd68f88a5d5a2430f804df2"> 178</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="structtinyformat_1_1detail_1_1is__convertible.html#a399ca4333bd68f88a5d5a2430f804df2">value</a> =</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">sizeof</span>(<a class="code" href="structtinyformat_1_1detail_1_1is__convertible.html#a304a3fb17a674e61c688dd1219875870">tryConvert</a>(<a class="code" href="structtinyformat_1_1detail_1_1is__convertible.html#af2068cf5629a702c9ccb3b8136c6fe2e">makeT1</a>())) == <span class="keyword">sizeof</span>(<a class="code" href="structtinyformat_1_1detail_1_1is__convertible_1_1succeed.html">succeed</a>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor"># ifdef _MSC_VER</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor"># pragma warning(pop)</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> };</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// Detect when a type is not a wchar_t string</span></div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1is__wchar.html#a2006c700bf3264d6002993949bbaaac9"> 187</a></span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1is__wchar.html">is_wchar</a> { <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="structtinyformat_1_1detail_1_1is__wchar.html#a2006c700bf3264d6002993949bbaaac9">tinyformat_wchar_is_not_supported</a>; };</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1is__wchar_3_01wchar__t_01_5_01_4.html"> 188</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1is__wchar.html">is_wchar</a><wchar_t*> {};</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1is__wchar_3_01const_01wchar__t_01_5_01_4.html"> 189</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1is__wchar.html">is_wchar</a><const wchar_t*> {};</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1is__wchar_3_01const_01wchar__t[n]_4.html"> 190</a></span> <span class="keyword">template</span><<span class="keywordtype">int</span> n> <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1is__wchar.html">is_wchar</a><const wchar_t[<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>]> {};</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1is__wchar_3_01wchar__t[n]_4.html"> 191</a></span> <span class="keyword">template</span><<span class="keywordtype">int</span> n> <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1is__wchar.html">is_wchar</a><wchar_t[<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>]> {};</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment">// Format the value by casting to type fmtT. This default implementation</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="comment">// should never be called.</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> template<typename T, typename fmtT, bool convertible = is_convertible<T, fmtT>::value></div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1formatValueAsType.html"> 197</a></span> <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1formatValueAsType.html">formatValueAsType</a></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> {</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1formatValueAsType.html#a126bc5958024c456851f08fa380d1cac"> 199</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structtinyformat_1_1detail_1_1formatValueAsType.html#a126bc5958024c456851f08fa380d1cac">invoke</a>(std::ostream& <span class="comment">/*out*/</span>, <span class="keyword">const</span> T& <span class="comment">/*value*/</span>) { assert(0); }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> };</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="comment">// Specialized version for types that can actually be converted to fmtT, as</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment">// indicated by the "convertible" template parameter.</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> fmtT></div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1formatValueAsType_3_01T_00_01fmtT_00_01true_01_4.html"> 204</a></span> <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1formatValueAsType.html">formatValueAsType</a><T,fmtT,true></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1formatValueAsType_3_01T_00_01fmtT_00_01true_01_4.html#a7680bc0f7b6b5eee0e27c494812fb667"> 206</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structtinyformat_1_1detail_1_1formatValueAsType_3_01T_00_01fmtT_00_01true_01_4.html#a7680bc0f7b6b5eee0e27c494812fb667">invoke</a>(std::ostream& <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, <span class="keyword">const</span> T& value)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  { out << static_cast<fmtT>(value); }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> };</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor">#ifdef TINYFORMAT_OLD_LIBSTDCPLUSPLUS_WORKAROUND</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> template<typename T, bool convertible = is_convertible<T, int>::value></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="keyword">struct </span>formatZeroIntegerWorkaround</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> invoke(std::ostream& , <span class="keyword">const</span> T& ) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> };</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="keyword">struct </span>formatZeroIntegerWorkaround<T,true></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="keyword">static</span> <span class="keywordtype">bool</span> invoke(std::ostream& <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, <span class="keyword">const</span> T& value)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span> (static_cast<int>(value) == 0 && <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.flags() & std::ios::showpos)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a> << <span class="stringliteral">"+0"</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> };</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor">#endif // TINYFORMAT_OLD_LIBSTDCPLUSPLUS_WORKAROUND</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="comment">// Convert an arbitrary type to integer. The version with convertible=false</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="comment">// throws an error.</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> template<typename T, bool convertible = is_convertible<T,int>::value></div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1convertToInt.html"> 234</a></span> <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1convertToInt.html">convertToInt</a></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> {</div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1convertToInt.html#a1e1c0d85c6afc3bb21d2bc9458b3feb1"> 236</a></span>  <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="structtinyformat_1_1detail_1_1convertToInt.html#a1e1c0d85c6afc3bb21d2bc9458b3feb1">invoke</a>(<span class="keyword">const</span> T& <span class="comment">/*value*/</span>)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="tinyformat_8h.html#aab516d7d4e92fe18eca4a9d40f450a80">TINYFORMAT_ERROR</a>(<span class="stringliteral">"tinyformat: Cannot convert from argument type to "</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="stringliteral">"integer for use as variable width or precision"</span>);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> };</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="comment">// Specialization for convertToInt when conversion is possible</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1convertToInt_3_01T_00_01true_01_4.html"> 245</a></span> <span class="keyword">struct </span><a class="code" href="structtinyformat_1_1detail_1_1convertToInt.html">convertToInt</a><T,true></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> {</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="structtinyformat_1_1detail_1_1convertToInt_3_01T_00_01true_01_4.html#a7d03793b995eb4428bb13349004f5fcd"> 247</a></span>  <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="structtinyformat_1_1detail_1_1convertToInt_3_01T_00_01true_01_4.html#a7d03793b995eb4428bb13349004f5fcd">invoke</a>(<span class="keyword">const</span> T& value) { <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(value); }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> };</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> } <span class="comment">// namespace detail</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="comment">//------------------------------------------------------------------------------</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="comment">// Variable formatting functions. May be overridden for user-defined types if</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="comment">// desired.</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="comment">// Format a value into a stream. Called from format() for all types by default.</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="comment">//</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="comment">// Users may override this for their own types. When this function is called,</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="comment">// the stream flags will have been modified according to the format string.</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="comment">// The format specification is provided in the range [fmtBegin, fmtEnd).</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="comment">//</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="comment">// By default, formatValue() uses the usual stream insertion operator</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="comment">// operator<< to format the type T, with special cases for the %c and %p</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="comment">// conversions.</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="namespacetinyformat.html#adc03c92f312158ae351d38ac867b9296"> 268</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacetinyformat.html#adc03c92f312158ae351d38ac867b9296">formatValue</a>(std::ostream& <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="comment">/*fmtBegin*/</span>,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* fmtEnd, <span class="keyword">const</span> T& value)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="preprocessor">#ifndef TINYFORMAT_ALLOW_WCHAR_STRINGS</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">// Since we don't support printing of wchar_t using "%ls", make it fail at</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">// compile time in preference to printing as a void* at runtime.</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structtinyformat_1_1detail_1_1is__wchar.html#a2006c700bf3264d6002993949bbaaac9">detail::is_wchar<T>::tinyformat_wchar_is_not_supported</a> DummyType;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  (void) DummyType(); <span class="comment">// avoid unused type warning with gcc-4.8</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// The mess here is to support the %c and %p conversions: if these</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// conversions are active we try to convert the type to a char or const</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// void* respectively and format that instead of the value itself. For the</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// %p conversion it's important to avoid dereferencing the pointer, which</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// could otherwise lead to a crash when printing a dangling (const char*).</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> canConvertToChar = <a class="code" href="structtinyformat_1_1detail_1_1is__convertible.html">detail::is_convertible<T,char>::value</a>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> canConvertToVoidPtr = <a class="code" href="structtinyformat_1_1detail_1_1is__convertible.html">detail::is_convertible<T, const void*>::value</a>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span>(canConvertToChar && *(fmtEnd-1) == <span class="charliteral">'c'</span>)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="structtinyformat_1_1detail_1_1formatValueAsType.html">detail::formatValueAsType<T, char>::invoke</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, value);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(canConvertToVoidPtr && *(fmtEnd-1) == <span class="charliteral">'p'</span>)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="structtinyformat_1_1detail_1_1formatValueAsType.html">detail::formatValueAsType<T, const void*>::invoke</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, value);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="preprocessor">#ifdef TINYFORMAT_OLD_LIBSTDCPLUSPLUS_WORKAROUND</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(detail::formatZeroIntegerWorkaround<T>::invoke(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, value)) ;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a> << value;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="comment">// Overloaded version for char types to support printing as an integer</span></div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ae166167e47ad25bdbd4a494ab46083b2"> 297</a></span> <span class="preprocessor">#define TINYFORMAT_DEFINE_FORMATVALUE_CHAR(charType) \</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="preprocessor">inline void formatValue(std::ostream& out, const char* </span><span class="comment">/*fmtBegin*/</span><span class="preprocessor">, \</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="preprocessor"> const char* fmtEnd, charType value) \</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="preprocessor"> switch(*(fmtEnd-1)) \</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor"> case 'u': case 'd': case 'i': case 'o': case 'X': case 'x': \</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="preprocessor"> out << static_cast<int>(value); break; \</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="preprocessor"> default: \</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor"> out << value; break; \</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="preprocessor"> } \</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="comment">// per 3.9.1: char, signed char and unsigned char are all distinct types</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <a class="code" href="tinyformat_8h.html#ae166167e47ad25bdbd4a494ab46083b2">TINYFORMAT_DEFINE_FORMATVALUE_CHAR</a>(<span class="keywordtype">char</span>)</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <a class="code" href="tinyformat_8h.html#ae166167e47ad25bdbd4a494ab46083b2">TINYFORMAT_DEFINE_FORMATVALUE_CHAR</a>(<span class="keywordtype">signed</span> <span class="keywordtype">char</span>)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <a class="code" href="tinyformat_8h.html#ae166167e47ad25bdbd4a494ab46083b2">TINYFORMAT_DEFINE_FORMATVALUE_CHAR</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor">#undef TINYFORMAT_DEFINE_FORMATVALUE_CHAR</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="comment">//------------------------------------------------------------------------------</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="comment">// Tools for emulating variadic templates in C++98. The basic idea here is</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="comment">// stolen from the boost preprocessor metaprogramming library and cut down to</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="comment">// be just general enough for what we need.</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a3002f76b13b5ca71ddd6dbe1fbdfdd24"> 321</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES(n) TINYFORMAT_ARGTYPES_ ## n</span></div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#adc183998bebc5b1304836a3e1c1a15ef"> 322</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS(n) TINYFORMAT_VARARGS_ ## n</span></div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a082db58a9dbf56ce60ecc8fa7041f640"> 323</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS(n) TINYFORMAT_PASSARGS_ ## n</span></div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ab99d1f9cde63cde80f0dfdfa44434931"> 324</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL(n) TINYFORMAT_PASSARGS_TAIL_ ## n</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="comment">// To keep it as transparent as possible, the macros below have been generated</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="comment">// using python via the excellent cog.py code generation script. This avoids</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="comment">// the need for a bunch of complex (but more general) preprocessor tricks as</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="comment">// used in boost.preprocessor.</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="comment">//</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="comment">// To rerun the code generation in place, use `cog.py -r tinyformat.h`</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="comment">// (see http://nedbatchelder.com/code/cog). Alternatively you can just create</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="comment">// extra versions by hand.</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="comment">/*[[[cog</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="comment">maxParams = 16</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="comment"></span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="comment">def makeCommaSepLists(lineTemplate, elemTemplate, startInd=1):</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="comment"> for j in range(startInd,maxParams+1):</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="comment"> list = ', '.join([elemTemplate % {'i':i} for i in range(startInd,j+1)])</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="comment"> cog.outl(lineTemplate % {'j':j, 'list':list})</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="comment"></span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="comment">makeCommaSepLists('#define TINYFORMAT_ARGTYPES_%(j)d %(list)s',</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="comment"> 'class T%(i)d')</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="comment"></span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="comment">cog.outl()</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="comment">makeCommaSepLists('#define TINYFORMAT_VARARGS_%(j)d %(list)s',</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="comment"> 'const T%(i)d& v%(i)d')</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="comment"></span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="comment">cog.outl()</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="comment">makeCommaSepLists('#define TINYFORMAT_PASSARGS_%(j)d %(list)s', 'v%(i)d')</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="comment"></span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="comment">cog.outl()</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="comment">cog.outl('#define TINYFORMAT_PASSARGS_TAIL_1')</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="comment">makeCommaSepLists('#define TINYFORMAT_PASSARGS_TAIL_%(j)d , %(list)s',</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="comment"> 'v%(i)d', startInd = 2)</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="comment"></span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="comment">cog.outl()</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="comment">cog.outl('#define TINYFORMAT_FOREACH_ARGNUM(m) \\\n ' +</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="comment"> ' '.join(['m(%d)' % (j,) for j in range(1,maxParams+1)]))</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="comment">]]]*/</span></div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ab4da2fa12b549afc3fd57975615bd200"> 362</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_1 class T1</span></div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a62a40a5308fc407370578ab6459b4851"> 363</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_2 class T1, class T2</span></div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#aeac3038358152135e1b8df44bf1b8ea8"> 364</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_3 class T1, class T2, class T3</span></div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ac7ecb64215a0b08825a883876007ac19"> 365</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_4 class T1, class T2, class T3, class T4</span></div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a66993ab97cb9b4904c160e1cd5d59b8a"> 366</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_5 class T1, class T2, class T3, class T4, class T5</span></div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a7bcc65431b8d13010af7420187683749"> 367</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_6 class T1, class T2, class T3, class T4, class T5, class T6</span></div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a5a3f46acfdd0a56f13d38618c37cdef8"> 368</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_7 class T1, class T2, class T3, class T4, class T5, class T6, class T7</span></div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a4b23b9b563f577458248652aa8044103"> 369</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_8 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8</span></div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a8d1dd0210087dfc81c121df66ee33e52"> 370</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_9 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9</span></div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a4b0d66d958ff38575a9a93170d694c24"> 371</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_10 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10</span></div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a8cd46da003d9fe59167940fe25867595"> 372</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_11 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11</span></div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a1aa959b2b483db19f1176306b4d06629"> 373</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_12 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12</span></div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a85223937916fef166b3508a912d7668b"> 374</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_13 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13</span></div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ae206bc85a6e4ff3d6c7b93292d73c0f4"> 375</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_14 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14</span></div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a0b90055a32894652d2afa0e8c33e652e"> 376</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_15 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15</span></div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ad4215441d9a2f690d0782652d29c93b9"> 377</a></span> <span class="preprocessor">#define TINYFORMAT_ARGTYPES_16 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#abf6c1d485da51e840e8e14e1bda2ad79"> 379</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_1 const T1& v1</span></div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a1e4ffcae5a12f54d6455bd8aa4e76213"> 380</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_2 const T1& v1, const T2& v2</span></div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a83d9dc2d60eccb797765288b8572ba4b"> 381</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_3 const T1& v1, const T2& v2, const T3& v3</span></div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ae6483027e89fb4eec2fcaa694af693e0"> 382</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_4 const T1& v1, const T2& v2, const T3& v3, const T4& v4</span></div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a83ae4d59f4423a7e711bb655e5046468"> 383</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_5 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5</span></div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ad5726325042f45f3360a075857c4546d"> 384</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_6 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6</span></div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a62c588966a11bd3889e4d6c771e81003"> 385</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_7 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7</span></div><div class="line"><a name="l00386"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a9c70447bc42824aeaae231a7e8a04cd5"> 386</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_8 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8</span></div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a5a8a23a3c9f9e193fe47abebac6a6f01"> 387</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_9 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9</span></div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a67c637e7ce786effe532c6f0acedc114"> 388</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_10 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10</span></div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#af74cfc89db3063127ac552b2096ee202"> 389</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_11 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11</span></div><div class="line"><a name="l00390"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#aecc96e4607757418cdd4a02dd3820c6f"> 390</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_12 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12</span></div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a923c19355d6b85fd5d9fb2b7a1185a44"> 391</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_13 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13</span></div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#aa6613ba107f054252cd79d758ce90f9a"> 392</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_14 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13, const T14& v14</span></div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a821d86c7d772cd6827d6edfd2455c827"> 393</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_15 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13, const T14& v14, const T15& v15</span></div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a65aa95c2886701f0789cf4cc8db446a8"> 394</a></span> <span class="preprocessor">#define TINYFORMAT_VARARGS_16 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13, const T14& v14, const T15& v15, const T16& v16</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a882de29f30658025cb7a40ab2a3c5385"> 396</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_1 v1</span></div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a3f61f8cbf29da3bb9d71621bd368b692"> 397</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_2 v1, v2</span></div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#abc73b631680468d2827adfedaec43714"> 398</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_3 v1, v2, v3</span></div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a4567123058003aa4858cc09129ccf43f"> 399</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_4 v1, v2, v3, v4</span></div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a4f6a35f5aac8ee7e256cccbe79f1bb11"> 400</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_5 v1, v2, v3, v4, v5</span></div><div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a3ca1aeaff8efc518c77191bd2beff211"> 401</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_6 v1, v2, v3, v4, v5, v6</span></div><div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ac15651ba5ff3a843fbcca70ca001a96b"> 402</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_7 v1, v2, v3, v4, v5, v6, v7</span></div><div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a3d27abbb9cc12dbf329bc65598e09407"> 403</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_8 v1, v2, v3, v4, v5, v6, v7, v8</span></div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a6df839f402e8139bd0bbd836a47c5f3c"> 404</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_9 v1, v2, v3, v4, v5, v6, v7, v8, v9</span></div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a62ab6727c0fef3078b61479189b844bc"> 405</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_10 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10</span></div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ad9bb86846d4e126423a6b7665d27cf25"> 406</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_11 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11</span></div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a09fab8f9299475206beee5cc402857cc"> 407</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_12 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12</span></div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a54de297a7daf6d056adaaf7bb149f9ed"> 408</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_13 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13</span></div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a6de6060bb4fcfd22665b5eb0bb53d73d"> 409</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_14 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14</span></div><div class="line"><a name="l00410"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a4c1b30542fbec366b19d9e7c19c49d68"> 410</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_15 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15</span></div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a24b8083c54138016c06383e1653e5a85"> 411</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_16 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a132e0319e39d703769b7f9c38ef8bcd9"> 413</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_1</span></div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#aa1e0f54c8b0a13299caab5a24fc851e2"> 414</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_2 , v2</span></div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a11e31b6fbafaf14301334626fc7518c4"> 415</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_3 , v2, v3</span></div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a90b438d5af0c4b428798867efe470b7e"> 416</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_4 , v2, v3, v4</span></div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ae6cea9440458a47e5eb8dd6b6665f0e8"> 417</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_5 , v2, v3, v4, v5</span></div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a07f18fe198b905273366c0811107153d"> 418</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_6 , v2, v3, v4, v5, v6</span></div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a8734eb33449039f3d565dafddc81929b"> 419</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_7 , v2, v3, v4, v5, v6, v7</span></div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#aa063f0470e12605d4b349519a5a6f5e0"> 420</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_8 , v2, v3, v4, v5, v6, v7, v8</span></div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a05975c0013b310e6e1f842675a789a81"> 421</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_9 , v2, v3, v4, v5, v6, v7, v8, v9</span></div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#af6e45a7311fa17280c6ee209ec781228"> 422</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_10 , v2, v3, v4, v5, v6, v7, v8, v9, v10</span></div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a4b08bbe2fc6b399a447bf1d60de7339a"> 423</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_11 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11</span></div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a1ab11bb125792323f42b70d53038c3e5"> 424</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_12 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12</span></div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a24c9395894209040cf21d85db47fface"> 425</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_13 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13</span></div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a3554f8d025bcd3897b543d2228449964"> 426</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_14 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14</span></div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ae58e378659770c1376d4bdb54190a87d"> 427</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_15 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15</span></div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a3f0a63604ce0d7f73ff55a54c57b42c5"> 428</a></span> <span class="preprocessor">#define TINYFORMAT_PASSARGS_TAIL_16 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#ae2e4f3482a2c4746b3f7429d62e252a7"> 430</a></span> <span class="preprocessor">#define TINYFORMAT_FOREACH_ARGNUM(m) \</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="preprocessor"> m(1) m(2) m(3) m(4) m(5) m(6) m(7) m(8) m(9) m(10) m(11) m(12) m(13) m(14) m(15) m(16)</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="comment">//[[[end]]]</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="keyword">namespace </span>detail {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="comment">// Class holding current position in format string and an output stream into</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="comment">// which arguments are formatted.</span></div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html"> 440</a></span> <span class="keyword">class </span><a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html">FormatIterator</a></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="comment">// Flags for features not representable with standard stream state</span></div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4"> 444</a></span>  <span class="keyword">enum</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4">ExtraFormatFlags</a></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  {</div><div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9ab97a1e3a40d92f84e93fa8358482aa"> 446</a></span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9ab97a1e3a40d92f84e93fa8358482aa">Flag_None</a> = 0,</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5b65abd67b2208298644ddc94687e390"> 447</a></span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5b65abd67b2208298644ddc94687e390">Flag_TruncateToPrecision</a> = 1<<0, <span class="comment">// truncate length to stream precision()</span></div><div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9d39e70884631652913a219fc8c631a9"> 448</a></span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9d39e70884631652913a219fc8c631a9">Flag_SpacePadPositive</a> = 1<<1, <span class="comment">// pad positive values with spaces</span></div><div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5d0e44bf22d5a33b12af70fab06a595d"> 449</a></span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5d0e44bf22d5a33b12af70fab06a595d">Flag_VariableWidth</a> = 1<<2, <span class="comment">// variable field width in arg list</span></div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a19e53a79433733d40dc1349ce52f3284"> 450</a></span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a19e53a79433733d40dc1349ce52f3284">Flag_VariablePrecision</a> = 1<<3 <span class="comment">// variable field precision in arg list</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  };</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// out is the output stream, fmt is the full format string</span></div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a798e0f475996df1b0a4f93540d96791b"> 454</a></span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a798e0f475996df1b0a4f93540d96791b">FormatIterator</a>(std::ostream& <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, <span class="keyword">const</span> <span class="keywordtype">char</span>* fmt)</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  : <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>),</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a>(fmt),</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9ab97a1e3a40d92f84e93fa8358482aa">Flag_None</a>),</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac1e16da97902d27500471ab71bc709a1">m_wantWidth</a>(false),</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a0bdab4360fa0e2a5877497bc4b789bed">m_wantPrecision</a>(false),</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22b2cc7248efb281d477dffe7b74306">m_variableWidth</a>(0),</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22fcacd5559bea7e2e6c9ed3e3025b7">m_variablePrecision</a>(0),</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac8778a5a4a79d0357bb349b3a834675c">m_origWidth</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.width()),</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#af533575dd881e88fc8630baa70d1cd52">m_origPrecision</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.precision()),</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abe80c91198f0f5f2649d584cd36f8df8">m_origFlags</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.<a class="code" href="dash-tx_8cpp.html#ac8bf36fe0577cba66bccda3a6f7e80a4">flags</a>()),</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a6a02fa0be4c3027e4687632240ed61b0">m_origFill</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.fill())</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  { }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="comment">// Print remaining part of format string.</span></div><div class="line"><a name="l00469"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a46377a804f72dbad1e508d2fbaa18ce9"> 469</a></span>  <span class="keywordtype">void</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a46377a804f72dbad1e508d2fbaa18ce9">finish</a>()</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="comment">// It would be nice if we could do this from the destructor, but we</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="comment">// can't if TINFORMAT_ERROR is used to throw an exception!</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a> = <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#af3bbb8259ac0593ec2268ef5863311d5">printFormatStringLiteral</a>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>, <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a>);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">if</span>(*<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a> != <span class="charliteral">'\0'</span>)</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="tinyformat_8h.html#aab516d7d4e92fe18eca4a9d40f450a80">TINYFORMAT_ERROR</a>(<span class="stringliteral">"tinyformat: Too many conversion specifiers in format string"</span>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a700ea30dbed93c28c499ac01c59a78a4"> 478</a></span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a700ea30dbed93c28c499ac01c59a78a4">~FormatIterator</a>()</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="comment">// Restore stream state</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>.width(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac8778a5a4a79d0357bb349b3a834675c">m_origWidth</a>);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>.precision(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#af533575dd881e88fc8630baa70d1cd52">m_origPrecision</a>);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>.flags(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abe80c91198f0f5f2649d584cd36f8df8">m_origFlags</a>);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>.fill(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a6a02fa0be4c3027e4687632240ed61b0">m_origFill</a>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordtype">void</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a2a2b99ea3a371e1ff8d56d8c8b801bdb">accept</a>(<span class="keyword">const</span> T& value);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="comment">// Parse and return an integer from the string c, as atoi()</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="comment">// On return, c is set to one past the end of the integer.</span></div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a4fab0ac9b2555c20c304da12668020ff"> 493</a></span>  <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a4fab0ac9b2555c20c304da12668020ff">parseIntAndAdvance</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>*& c)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordtype">int</span> i = 0;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">for</span>(;*c >= <span class="charliteral">'0'</span> && *c <= <span class="charliteral">'9'</span>; ++c)</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  i = 10*i + (*c - <span class="charliteral">'0'</span>);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">return</span> i;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> </div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">// Format at most truncLen characters of a C string to the given</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="comment">// stream. Return true if formatting proceeded (generic version always</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="comment">// returns false)</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a048d56660908fe084fc9930bad352c8e"> 505</a></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a048d56660908fe084fc9930bad352c8e">formatCStringTruncate</a>(std::ostream& <span class="comment">/*out*/</span>, <span class="keyword">const</span> T& <span class="comment">/*value*/</span>,</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  std::streamsize <span class="comment">/*truncLen*/</span>)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  }</div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#abec92c1222dcfd430881422760e85c58"> 510</a></span> <span class="preprocessor"># define TINYFORMAT_DEFINE_FORMAT_C_STRING_TRUNCATE(type) \</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="preprocessor"> static bool formatCStringTruncate(std::ostream& out, type* value, \</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="preprocessor"> std::streamsize truncLen) \</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="preprocessor"> { \</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="preprocessor"> std::streamsize len = 0; \</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="preprocessor"> while(len < truncLen && value[len] != 0) \</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="preprocessor"> ++len; \</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="preprocessor"> out.write(value, len); \</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="preprocessor"> return true; \</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="preprocessor"> }</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="comment">// Overload for const char* and char*. Could overload for signed &</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="comment">// unsigned char too, but these are technically unneeded for printf</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="comment">// compatibility.</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <a class="code" href="tinyformat_8h.html#abec92c1222dcfd430881422760e85c58">TINYFORMAT_DEFINE_FORMAT_C_STRING_TRUNCATE</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>)</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <a class="code" href="tinyformat_8h.html#abec92c1222dcfd430881422760e85c58">TINYFORMAT_DEFINE_FORMAT_C_STRING_TRUNCATE</a>(<span class="keywordtype">char</span>)</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="preprocessor"># undef TINYFORMAT_DEFINE_FORMAT_C_STRING_TRUNCATE</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">// Print literal part of format string and return next format spec</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="comment">// position.</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="comment">//</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="comment">// Skips over any occurrences of '%%', printing a literal '%' to the</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="comment">// output. The position of the first % character of the next</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="comment">// nontrivial format spec is returned, or the end of string.</span></div><div class="line"><a name="l00533"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#af3bbb8259ac0593ec2268ef5863311d5"> 533</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#af3bbb8259ac0593ec2268ef5863311d5">printFormatStringLiteral</a>(std::ostream& <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>,</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* fmt)</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* c = fmt;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">for</span>(; <span class="keyword">true</span>; ++c)</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">switch</span>(*c)</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">case</span> <span class="charliteral">'\0'</span>:</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.write(fmt, static_cast<std::streamsize>(c - fmt));</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">case</span> <span class="charliteral">'%'</span>:</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.write(fmt, static_cast<std::streamsize>(c - fmt));</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">if</span>(*(c+1) != <span class="charliteral">'%'</span>)</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="comment">// for "%%", tack trailing % onto next literal section.</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  fmt = ++c;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  }</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> </div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a42ed39c6771b424bc084b32c5836e83e">streamStateFromFormat</a>(std::ostream& <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>,</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>& extraFlags,</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* fmtStart,</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordtype">int</span> variableWidth,</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordtype">int</span> variablePrecision);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> </div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="comment">// Private copy & assign: Kill gcc warnings with -Weffc++</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a798e0f475996df1b0a4f93540d96791b">FormatIterator</a>(<span class="keyword">const</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html">FormatIterator</a>&);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html">FormatIterator</a>& <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a20a716e45ece517c8ae9556ed36b58bc">operator=</a>(<span class="keyword">const</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html">FormatIterator</a>&);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="comment">// Stream, current format string & state</span></div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f"> 566</a></span>  std::ostream& <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>;</div><div class="line"><a name="l00567"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc"> 567</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a>;</div><div class="line"><a name="l00568"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4"> 568</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="comment">// State machine info for handling of variable width & precision</span></div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac1e16da97902d27500471ab71bc709a1"> 570</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac1e16da97902d27500471ab71bc709a1">m_wantWidth</a>;</div><div class="line"><a name="l00571"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a0bdab4360fa0e2a5877497bc4b789bed"> 571</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a0bdab4360fa0e2a5877497bc4b789bed">m_wantPrecision</a>;</div><div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22b2cc7248efb281d477dffe7b74306"> 572</a></span>  <span class="keywordtype">int</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22b2cc7248efb281d477dffe7b74306">m_variableWidth</a>;</div><div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22fcacd5559bea7e2e6c9ed3e3025b7"> 573</a></span>  <span class="keywordtype">int</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22fcacd5559bea7e2e6c9ed3e3025b7">m_variablePrecision</a>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="comment">// Saved stream state</span></div><div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac8778a5a4a79d0357bb349b3a834675c"> 575</a></span>  std::streamsize <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac8778a5a4a79d0357bb349b3a834675c">m_origWidth</a>;</div><div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#af533575dd881e88fc8630baa70d1cd52"> 576</a></span>  std::streamsize <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#af533575dd881e88fc8630baa70d1cd52">m_origPrecision</a>;</div><div class="line"><a name="l00577"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#abe80c91198f0f5f2649d584cd36f8df8"> 577</a></span>  std::ios::fmtflags <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abe80c91198f0f5f2649d584cd36f8df8">m_origFlags</a>;</div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a6a02fa0be4c3027e4687632240ed61b0"> 578</a></span>  <span class="keywordtype">char</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a6a02fa0be4c3027e4687632240ed61b0">m_origFill</a>;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> };</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> </div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="comment">// Accept a value for formatting into the internal stream.</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> <a class="code" href="tinyformat_8h.html#a6aa2353acc671b972658fd73a813b960">TINYFORMAT_NOINLINE</a> <span class="comment">// < greatly reduces bloat in optimized builds</span></div><div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a914be2066071c01cac4c2ea867c9d89a"> 585</a></span> <span class="keywordtype">void</span> <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a2a2b99ea3a371e1ff8d56d8c8b801bdb">FormatIterator::accept</a>(<span class="keyword">const</span> T& value)</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="comment">// Parse the format string</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* fmtEnd = 0;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">if</span>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a> == <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9ab97a1e3a40d92f84e93fa8358482aa">Flag_None</a> && !<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac1e16da97902d27500471ab71bc709a1">m_wantWidth</a> && !<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a0bdab4360fa0e2a5877497bc4b789bed">m_wantPrecision</a>)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a> = <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#af3bbb8259ac0593ec2268ef5863311d5">printFormatStringLiteral</a>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>, <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a>);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  fmtEnd = <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a42ed39c6771b424bc084b32c5836e83e">streamStateFromFormat</a>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>, <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a>, <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a>, 0, 0);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac1e16da97902d27500471ab71bc709a1">m_wantWidth</a> = (<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a> & <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5d0e44bf22d5a33b12af70fab06a595d">Flag_VariableWidth</a>) != 0;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a0bdab4360fa0e2a5877497bc4b789bed">m_wantPrecision</a> = (<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a> & <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a19e53a79433733d40dc1349ce52f3284">Flag_VariablePrecision</a>) != 0;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="comment">// Consume value as variable width and precision specifier if necessary</span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">if</span>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a> & (<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5d0e44bf22d5a33b12af70fab06a595d">Flag_VariableWidth</a> | <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a19e53a79433733d40dc1349ce52f3284">Flag_VariablePrecision</a>))</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  {</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">if</span>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac1e16da97902d27500471ab71bc709a1">m_wantWidth</a> || <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a0bdab4360fa0e2a5877497bc4b789bed">m_wantPrecision</a>)</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordtype">int</span> v = <a class="code" href="structtinyformat_1_1detail_1_1convertToInt.html#a1e1c0d85c6afc3bb21d2bc9458b3feb1">convertToInt<T>::invoke</a>(value);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">if</span>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac1e16da97902d27500471ab71bc709a1">m_wantWidth</a>)</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  {</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22b2cc7248efb281d477dffe7b74306">m_variableWidth</a> = v;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ac1e16da97902d27500471ab71bc709a1">m_wantWidth</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  }</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a0bdab4360fa0e2a5877497bc4b789bed">m_wantPrecision</a>)</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  {</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22fcacd5559bea7e2e6c9ed3e3025b7">m_variablePrecision</a> = v;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a0bdab4360fa0e2a5877497bc4b789bed">m_wantPrecision</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  }</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="comment">// If we get here, we've set both the variable precision and width as</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="comment">// required and we need to rerun the stream state setup to insert these.</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  fmtEnd = <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a42ed39c6771b424bc084b32c5836e83e">streamStateFromFormat</a>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>, <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a>, <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a>,</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22b2cc7248efb281d477dffe7b74306">m_variableWidth</a>, <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22fcacd5559bea7e2e6c9ed3e3025b7">m_variablePrecision</a>);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="comment">// Format the value into the stream.</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">if</span>(!(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a> & (<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9d39e70884631652913a219fc8c631a9">Flag_SpacePadPositive</a> | <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5b65abd67b2208298644ddc94687e390">Flag_TruncateToPrecision</a>)))</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <a class="code" href="namespacetinyformat.html#adc03c92f312158ae351d38ac867b9296">formatValue</a>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>, <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a>, fmtEnd, value);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="comment">// The following are special cases where there's no direct</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="comment">// correspondence between stream formatting and the printf() behaviour.</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="comment">// Instead, we simulate the behaviour crudely by formatting into a</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="comment">// temporary string stream and munging the resulting string.</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  std::ostringstream tmpStream;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  tmpStream.copyfmt(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">if</span>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a> & <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9d39e70884631652913a219fc8c631a9">Flag_SpacePadPositive</a>)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  tmpStream.setf(std::ios::showpos);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="comment">// formatCStringTruncate is required for truncating conversions like</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="comment">// "%.4s" where at most 4 characters of the c-string should be read.</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="comment">// If we didn't include this special case, we might read off the end.</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">if</span>(!( (<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a> & <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5b65abd67b2208298644ddc94687e390">Flag_TruncateToPrecision</a>) &&</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a048d56660908fe084fc9930bad352c8e">formatCStringTruncate</a>(tmpStream, value, <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>.precision()) ))</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="comment">// Not a truncated c-string; just format normally.</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <a class="code" href="namespacetinyformat.html#adc03c92f312158ae351d38ac867b9296">formatValue</a>(tmpStream, <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a>, fmtEnd, value);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  std::string <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a> = tmpStream.str(); <span class="comment">// allocates... yuck.</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordflow">if</span>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a> & <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9d39e70884631652913a219fc8c631a9">Flag_SpacePadPositive</a>)</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0, iend = <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>.size(); i < iend; ++i)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">if</span>(<a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>[i] == <span class="charliteral">'+'</span>)</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>[i] = <span class="charliteral">' '</span>;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">if</span>((<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a> & <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5b65abd67b2208298644ddc94687e390">Flag_TruncateToPrecision</a>) &&</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  (int)<a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>.size() > (int)<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>.precision())</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>.write(<a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>.c_str(), <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a>.precision());</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">m_out</a> << <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  }</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">m_extraFlags</a> = <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9ab97a1e3a40d92f84e93fa8358482aa">Flag_None</a>;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">m_fmt</a> = fmtEnd;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> </div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="comment">// Parse a format string and set the stream state accordingly.</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="comment">//</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <span class="comment">// The format mini-language recognized here is meant to be the one from C99,</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <span class="comment">// with the form "%[flags][width][.precision][length]type".</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="comment">//</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> <span class="comment">// Formatting options which can't be natively represented using the ostream</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> <span class="comment">// state are returned in the extraFlags parameter which is a bitwise</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <span class="comment">// combination of values from the ExtraFormatFlags enum.</span></div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classtinyformat_1_1detail_1_1FormatIterator.html#a42ed39c6771b424bc084b32c5836e83e"> 668</a></span> <span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a42ed39c6771b424bc084b32c5836e83e">FormatIterator::streamStateFromFormat</a>(std::ostream& <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>,</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>& extraFlags,</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* fmtStart,</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordtype">int</span> variableWidth,</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordtype">int</span> variablePrecision)</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordflow">if</span>(*fmtStart != <span class="charliteral">'%'</span>)</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  {</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <a class="code" href="tinyformat_8h.html#aab516d7d4e92fe18eca4a9d40f450a80">TINYFORMAT_ERROR</a>(<span class="stringliteral">"tinyformat: Not enough conversion specifiers in format string"</span>);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">return</span> fmtStart;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  }</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="comment">// Reset stream state to defaults.</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.width(0);</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.precision(6);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.fill(<span class="charliteral">' '</span>);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="comment">// Reset most flags; ignore irrelevant unitbuf & skipws.</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.unsetf(std::ios::adjustfield | std::ios::basefield |</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  std::ios::floatfield | std::ios::showbase | std::ios::boolalpha |</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  std::ios::showpoint | std::ios::showpos | std::ios::uppercase);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  extraFlags = <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9ab97a1e3a40d92f84e93fa8358482aa">Flag_None</a>;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordtype">bool</span> precisionSet = <span class="keyword">false</span>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordtype">bool</span> widthSet = <span class="keyword">false</span>;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* c = fmtStart + 1;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="comment">// 1) Parse flags</span></div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">for</span>(;; ++c)</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordflow">switch</span>(*c)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">case</span> <span class="charliteral">'#'</span>:</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::showpoint | std::ios::showbase);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">case</span> <span class="charliteral">'0'</span>:</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="comment">// overridden by left alignment ('-' flag)</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">if</span>(!(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.flags() & std::ios::left))</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="comment">// Use internal padding so that numeric values are</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="comment">// formatted correctly, eg -00010 rather than 000-10</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.fill(<span class="charliteral">'0'</span>);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::internal, std::ios::adjustfield);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">case</span> <span class="charliteral">'-'</span>:</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.fill(<span class="charliteral">' '</span>);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::left, std::ios::adjustfield);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">case</span> <span class="charliteral">' '</span>:</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="comment">// overridden by show positive sign, '+' flag.</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">if</span>(!(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.flags() & std::ios::showpos))</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  extraFlags |= <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9d39e70884631652913a219fc8c631a9">Flag_SpacePadPositive</a>;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">case</span> <span class="charliteral">'+'</span>:</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::showpos);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  extraFlags &= ~<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9d39e70884631652913a219fc8c631a9">Flag_SpacePadPositive</a>;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  }</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="comment">// 2) Parse width</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">if</span>(*c >= <span class="charliteral">'0'</span> && *c <= <span class="charliteral">'9'</span>)</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  widthSet = <span class="keyword">true</span>;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.width(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a4fab0ac9b2555c20c304da12668020ff">parseIntAndAdvance</a>(c));</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">if</span>(*c == <span class="charliteral">'*'</span>)</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  widthSet = <span class="keyword">true</span>;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">if</span>(variableWidth < 0)</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  {</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="comment">// negative widths correspond to '-' flag set</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.fill(<span class="charliteral">' '</span>);</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::left, std::ios::adjustfield);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  variableWidth = -variableWidth;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  }</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.width(variableWidth);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  extraFlags |= <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5d0e44bf22d5a33b12af70fab06a595d">Flag_VariableWidth</a>;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  ++c;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  }</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="comment">// 3) Parse precision</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordflow">if</span>(*c == <span class="charliteral">'.'</span>)</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  {</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  ++c;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keywordtype">int</span> precision = 0;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">if</span>(*c == <span class="charliteral">'*'</span>)</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  {</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  ++c;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  extraFlags |= <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a19e53a79433733d40dc1349ce52f3284">Flag_VariablePrecision</a>;</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  precision = variablePrecision;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  }</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">if</span>(*c >= <span class="charliteral">'0'</span> && *c <= <span class="charliteral">'9'</span>)</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  precision = <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a4fab0ac9b2555c20c304da12668020ff">parseIntAndAdvance</a>(c);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(*c == <span class="charliteral">'-'</span>) <span class="comment">// negative precisions ignored, treated as zero.</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a4fab0ac9b2555c20c304da12668020ff">parseIntAndAdvance</a>(++c);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.precision(precision);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  precisionSet = <span class="keyword">true</span>;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  }</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="comment">// 4) Ignore any C99 length modifier</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordflow">while</span>(*c == <span class="charliteral">'l'</span> || *c == <span class="charliteral">'h'</span> || *c == <span class="charliteral">'L'</span> ||</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  *c == <span class="charliteral">'j'</span> || *c == <span class="charliteral">'z'</span> || *c == <span class="charliteral">'t'</span>)</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  ++c;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="comment">// 5) We're up to the conversion specifier character.</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="comment">// Set stream flags based on conversion specifier (thanks to the</span></div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="comment">// boost::format class for forging the way here).</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordtype">bool</span> intConversion = <span class="keyword">false</span>;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">switch</span>(*c)</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  {</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">case</span> <span class="charliteral">'u'</span>: <span class="keywordflow">case</span> <span class="charliteral">'d'</span>: <span class="keywordflow">case</span> <span class="charliteral">'i'</span>:</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::dec, std::ios::basefield);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  intConversion = <span class="keyword">true</span>;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">case</span> <span class="charliteral">'o'</span>:</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::oct, std::ios::basefield);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  intConversion = <span class="keyword">true</span>;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keywordflow">case</span> <span class="charliteral">'X'</span>:</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::uppercase);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="keywordflow">case</span> <span class="charliteral">'x'</span>: <span class="keywordflow">case</span> <span class="charliteral">'p'</span>:</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::hex, std::ios::basefield);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  intConversion = <span class="keyword">true</span>;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">case</span> <span class="charliteral">'E'</span>:</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::uppercase);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keywordflow">case</span> <span class="charliteral">'e'</span>:</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::scientific, std::ios::floatfield);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::dec, std::ios::basefield);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">case</span> <span class="charliteral">'F'</span>:</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::uppercase);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">case</span> <span class="charliteral">'f'</span>:</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::fixed, std::ios::floatfield);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">case</span> <span class="charliteral">'G'</span>:</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::uppercase);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordflow">case</span> <span class="charliteral">'g'</span>:</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::dec, std::ios::basefield);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="comment">// As in boost::format, let stream decide float format.</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.flags(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.flags() & ~<a class="code" href="namespacestd.html">std</a>::ios::floatfield);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="keywordflow">case</span> <span class="charliteral">'a'</span>: <span class="keywordflow">case</span> <span class="charliteral">'A'</span>:</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <a class="code" href="tinyformat_8h.html#aab516d7d4e92fe18eca4a9d40f450a80">TINYFORMAT_ERROR</a>(<span class="stringliteral">"tinyformat: the %a and %A conversion specs "</span></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="stringliteral">"are not supported"</span>);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keywordflow">case</span> <span class="charliteral">'c'</span>:</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="comment">// Handled as special case inside formatValue()</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keywordflow">case</span> <span class="charliteral">'s'</span>:</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordflow">if</span>(precisionSet)</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  extraFlags |= <a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5b65abd67b2208298644ddc94687e390">Flag_TruncateToPrecision</a>;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="comment">// Make %s print booleans as "true" and "false"</span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::boolalpha);</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">case</span> <span class="charliteral">'n'</span>:</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="comment">// Not supported - will cause problems!</span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <a class="code" href="tinyformat_8h.html#aab516d7d4e92fe18eca4a9d40f450a80">TINYFORMAT_ERROR</a>(<span class="stringliteral">"tinyformat: %n conversion spec not supported"</span>);</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">case</span> <span class="charliteral">'\0'</span>:</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <a class="code" href="tinyformat_8h.html#aab516d7d4e92fe18eca4a9d40f450a80">TINYFORMAT_ERROR</a>(<span class="stringliteral">"tinyformat: Conversion spec incorrectly "</span></div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="stringliteral">"terminated by end of string"</span>);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  }</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">if</span>(intConversion && precisionSet && !widthSet)</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="comment">// "precision" for integers gives the minimum number of digits (to be</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="comment">// padded with zeros on the left). This isn't really supported by the</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="comment">// iostreams, but we can approximately simulate it with the width if</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="comment">// the width isn't otherwise used.</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.width(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.precision());</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.setf(std::ios::internal, std::ios::adjustfield);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.fill(<span class="charliteral">'0'</span>);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  }</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">return</span> c+1;</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> }</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> </div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> </div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <span class="comment">//------------------------------------------------------------------------------</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="comment">// Private format function on top of which the public interface is implemented.</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> <span class="comment">// We enforce a mimimum of one value to be formatted to prevent bugs looking like</span></div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span> <span class="comment">//</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="comment">// const char* myStr = "100% broken";</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> <span class="comment">// printf(myStr); // Parses % as a format specifier</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> <span class="preprocessor">#ifdef TINYFORMAT_USE_VARIADIC_TEMPLATES</span></div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> </div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> <span class="keyword">template</span><<span class="keyword">typename</span> T1></div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="keywordtype">void</span> <a class="code" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">format</a>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html">FormatIterator</a>& fmtIter, <span class="keyword">const</span> T1& value1)</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> {</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  fmtIter.<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a2a2b99ea3a371e1ff8d56d8c8b801bdb">accept</a>(value1);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  fmtIter.<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a46377a804f72dbad1e508d2fbaa18ce9">finish</a>();</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> }</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> </div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> <span class="comment">// General version for C++11</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <span class="keyword">template</span><<span class="keyword">typename</span> T1, <span class="keyword">typename</span>... Args></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> <span class="keywordtype">void</span> <a class="code" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">format</a>(FormatIterator& fmtIter, <span class="keyword">const</span> T1& value1, <span class="keyword">const</span> Args&... args)</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  fmtIter.accept(value1);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <a class="code" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">format</a>(fmtIter, args...);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> }</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span> </div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> </div><div class="line"><a name="l00870"></a><span class="lineno"><a class="line" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba"> 870</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">format</a>(<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html">FormatIterator</a>& fmtIter)</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> {</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  fmtIter.<a class="code" href="classtinyformat_1_1detail_1_1FormatIterator.html#a46377a804f72dbad1e508d2fbaa18ce9">finish</a>();</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> }</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> </div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> <span class="comment">// General version for C++98</span></div><div class="line"><a name="l00876"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#af638bd299ae847906bd2bd3e00e57772"> 876</a></span> <span class="preprocessor">#define TINYFORMAT_MAKE_FORMAT_DETAIL(n) \</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> <span class="preprocessor">template<TINYFORMAT_ARGTYPES(n)> \</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="preprocessor">void format(detail::FormatIterator& fmtIter, TINYFORMAT_VARARGS(n)) \</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span> <span class="preprocessor"> fmtIter.accept(v1); \</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="preprocessor"> format(fmtIter TINYFORMAT_PASSARGS_TAIL(n)); \</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> </div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> <a class="code" href="tinyformat_8h.html#ae2e4f3482a2c4746b3f7429d62e252a7">TINYFORMAT_FOREACH_ARGNUM</a>(<a class="code" href="tinyformat_8h.html#af638bd299ae847906bd2bd3e00e57772">TINYFORMAT_MAKE_FORMAT_DETAIL</a>)</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> <span class="preprocessor">#undef TINYFORMAT_MAKE_FORMAT_DETAIL</span></div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> </div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> <span class="preprocessor">#endif // End C++98 variadic template emulation for format()</span></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> </div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> } <span class="comment">// namespace detail</span></div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> </div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> </div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> <span class="comment">//------------------------------------------------------------------------------</span></div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> <span class="comment">// Implement all the main interface functions here in terms of detail::format()</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span> </div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> <span class="preprocessor">#ifdef TINYFORMAT_USE_VARIADIC_TEMPLATES</span></div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> </div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> <span class="comment">// C++11 - the simple case</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="keyword">template</span><<span class="keyword">typename</span> T1, <span class="keyword">typename</span>... Args></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="keywordtype">void</span> <a class="code" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">format</a>(std::ostream& <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, <span class="keyword">const</span> <span class="keywordtype">char</span>* fmt, <span class="keyword">const</span> T1& v1, <span class="keyword">const</span> Args&... args)</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> {</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  detail::FormatIterator fmtIter(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, fmt);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <a class="code" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">format</a>(fmtIter, v1, args...);</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> }</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> </div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> <span class="keyword">template</span><<span class="keyword">typename</span> T1, <span class="keyword">typename</span>... Args></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span> std::string <a class="code" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">format</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* fmt, <span class="keyword">const</span> T1& v1, <span class="keyword">const</span> Args&... args)</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span> {</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  std::ostringstream oss;</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <a class="code" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">format</a>(oss, fmt, v1, args...);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordflow">return</span> oss.str();</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span> }</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span> </div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> <span class="keyword">template</span><<span class="keyword">typename</span> T1, <span class="keyword">typename</span>... Args></div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span> std::string <a class="code" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">format</a>(<span class="keyword">const</span> std::string &fmt, <span class="keyword">const</span> T1& v1, <span class="keyword">const</span> Args&... args)</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> {</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  std::ostringstream oss;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <a class="code" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">format</a>(oss, fmt.c_str(), v1, args...);</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">return</span> oss.str();</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span> }</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> </div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> <span class="keyword">template</span><<span class="keyword">typename</span> T1, <span class="keyword">typename</span>... Args></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> <span class="keywordtype">void</span> printf(<span class="keyword">const</span> <span class="keywordtype">char</span>* fmt, <span class="keyword">const</span> T1& v1, <span class="keyword">const</span> Args&... args)</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> {</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <a class="code" href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">format</a>(std::cout, fmt, v1, args...);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> }</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> </div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span> <span class="comment">// C++98 - define the interface functions using the wrapping macros</span></div><div class="line"><a name="l00930"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a85c1bcb25897c3da7820c02e7ba63f11"> 930</a></span> <span class="preprocessor">#define TINYFORMAT_MAKE_FORMAT_FUNCS(n) \</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> <span class="preprocessor"> \</span></div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> <span class="preprocessor">template<TINYFORMAT_ARGTYPES(n)> \</span></div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> <span class="preprocessor">void format(std::ostream& out, const char* fmt, TINYFORMAT_VARARGS(n)) \</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span> <span class="preprocessor"> tinyformat::detail::FormatIterator fmtIter(out, fmt); \</span></div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> <span class="preprocessor"> tinyformat::detail::format(fmtIter, TINYFORMAT_PASSARGS(n)); \</span></div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> <span class="preprocessor">} \</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="preprocessor"> \</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span> <span class="preprocessor">template<TINYFORMAT_ARGTYPES(n)> \</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> <span class="preprocessor">std::string format(const char* fmt, TINYFORMAT_VARARGS(n)) \</span></div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> <span class="preprocessor"> std::ostringstream oss; \</span></div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> <span class="preprocessor"> tinyformat::format(oss, fmt, TINYFORMAT_PASSARGS(n)); \</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> <span class="preprocessor"> return oss.str(); \</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> <span class="preprocessor">} \</span></div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> <span class="preprocessor"> \</span></div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="preprocessor">template<TINYFORMAT_ARGTYPES(n)> \</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="preprocessor">std::string format(const std::string &fmt, TINYFORMAT_VARARGS(n)) \</span></div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> <span class="preprocessor"> std::ostringstream oss; \</span></div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span> <span class="preprocessor"> tinyformat::format(oss, fmt.c_str(), TINYFORMAT_PASSARGS(n)); \</span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> <span class="preprocessor"> return oss.str(); \</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> <span class="preprocessor">} \</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> <span class="preprocessor"> \</span></div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span> <span class="preprocessor">template<TINYFORMAT_ARGTYPES(n)> \</span></div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> <span class="preprocessor">void printf(const char* fmt, TINYFORMAT_VARARGS(n)) \</span></div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> <span class="preprocessor"> tinyformat::format(std::cout, fmt, TINYFORMAT_PASSARGS(n)); \</span></div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> <span class="preprocessor">}</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> </div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span> <a class="code" href="tinyformat_8h.html#ae2e4f3482a2c4746b3f7429d62e252a7">TINYFORMAT_FOREACH_ARGNUM</a>(<a class="code" href="tinyformat_8h.html#a85c1bcb25897c3da7820c02e7ba63f11">TINYFORMAT_MAKE_FORMAT_FUNCS</a>)</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> <span class="preprocessor">#undef TINYFORMAT_MAKE_FORMAT_FUNCS</span></div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> </div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> </div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> <span class="comment">//------------------------------------------------------------------------------</span></div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> <span class="comment">// Define deprecated wrapping macro for backward compatibility in tinyformat</span></div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span> <span class="comment">// 1.x. Will be removed in version 2!</span></div><div class="line"><a name="l00969"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a28eda6fd28712f6a26ecd7900c524a8a"> 969</a></span> <span class="preprocessor">#define TINYFORMAT_WRAP_FORMAT_EXTRA_ARGS</span></div><div class="line"><a name="l00970"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#af664187d80e7faca60c84b7829cca6ae"> 970</a></span> <span class="preprocessor">#define TINYFORMAT_WRAP_FORMAT_N(n, returnType, funcName, funcDeclSuffix, \</span></div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span> <span class="preprocessor"> bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> <span class="preprocessor">template<TINYFORMAT_ARGTYPES(n)> \</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> <span class="preprocessor">returnType funcName(TINYFORMAT_WRAP_FORMAT_EXTRA_ARGS const char* fmt, \</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> <span class="preprocessor"> TINYFORMAT_VARARGS(n)) funcDeclSuffix \</span></div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> <span class="preprocessor"> bodyPrefix \</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> <span class="preprocessor"> tinyformat::format(streamName, fmt, TINYFORMAT_PASSARGS(n)); \</span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="preprocessor"> bodySuffix \</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> <span class="preprocessor">} \</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="preprocessor"></span></div><div class="line"><a name="l00981"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a5fecabf7aa4b9d513db7fe9c838342e0"> 981</a></span> <span class="preprocessor">#define TINYFORMAT_WRAP_FORMAT(returnType, funcName, funcDeclSuffix, \</span></div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span> <span class="preprocessor"> bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="preprocessor">inline \</span></div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span> <span class="preprocessor">returnType funcName(TINYFORMAT_WRAP_FORMAT_EXTRA_ARGS const char* fmt \</span></div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="preprocessor"> ) funcDeclSuffix \</span></div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span> <span class="preprocessor">{ \</span></div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> <span class="preprocessor"> bodyPrefix \</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <span class="preprocessor"> tinyformat::detail::FormatIterator(streamName, fmt).finish(); \</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> <span class="preprocessor"> bodySuffix \</span></div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> <span class="preprocessor">} \</span></div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(1 , returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(2 , returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(3 , returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(4 , returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(5 , returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(6 , returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(7 , returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(8 , returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(9 , returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(10, returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(11, returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(12, returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(13, returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(14, returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(15, returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="preprocessor">TINYFORMAT_WRAP_FORMAT_N(16, returnType, funcName, funcDeclSuffix, bodyPrefix, streamName, bodySuffix) \</span></div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> <span class="preprocessor"></span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> </div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> } <span class="comment">// namespace tinyformat</span></div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div><div class="line"><a name="l01011"></a><span class="lineno"><a class="line" href="tinyformat_8h.html#a56c674871a61baaad36ad52238c08857"> 1011</a></span> <span class="preprocessor">#define strprintf tfm::format</span></div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> </div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="preprocessor">#endif // TINYFORMAT_H_INCLUDED</span></div><div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a219d15b3b08e2e2039043d2e992cc0b4a9d39e70884631652913a219fc8c631a9"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9d39e70884631652913a219fc8c631a9">tinyformat::detail::FormatIterator::Flag_SpacePadPositive</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00448">tinyformat.h:448</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a20a716e45ece517c8ae9556ed36b58bc"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a20a716e45ece517c8ae9556ed36b58bc">tinyformat::detail::FormatIterator::operator=</a></div><div class="ttdeci">FormatIterator & operator=(const FormatIterator &)</div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_af3bbb8259ac0593ec2268ef5863311d5"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#af3bbb8259ac0593ec2268ef5863311d5">tinyformat::detail::FormatIterator::printFormatStringLiteral</a></div><div class="ttdeci">static const char * printFormatStringLiteral(std::ostream &out, const char *fmt)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00533">tinyformat.h:533</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1is__convertible_html_af2068cf5629a702c9ccb3b8136c6fe2e"><div class="ttname"><a href="structtinyformat_1_1detail_1_1is__convertible.html#af2068cf5629a702c9ccb3b8136c6fe2e">tinyformat::detail::is_convertible::makeT1</a></div><div class="ttdeci">static const T1 & makeT1()</div></div>
|
|
<div class="ttc" id="tinyformat_8h_html_af638bd299ae847906bd2bd3e00e57772"><div class="ttname"><a href="tinyformat_8h.html#af638bd299ae847906bd2bd3e00e57772">TINYFORMAT_MAKE_FORMAT_DETAIL</a></div><div class="ttdeci">#define TINYFORMAT_MAKE_FORMAT_DETAIL(n)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00876">tinyformat.h:876</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a42ed39c6771b424bc084b32c5836e83e"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a42ed39c6771b424bc084b32c5836e83e">tinyformat::detail::FormatIterator::streamStateFromFormat</a></div><div class="ttdeci">static const char * streamStateFromFormat(std::ostream &out, unsigned int &extraFlags, const char *fmtStart, int variableWidth, int variablePrecision)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00668">tinyformat.h:668</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a798e0f475996df1b0a4f93540d96791b"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a798e0f475996df1b0a4f93540d96791b">tinyformat::detail::FormatIterator::FormatIterator</a></div><div class="ttdeci">FormatIterator(std::ostream &out, const char *fmt)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00454">tinyformat.h:454</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a2a2b99ea3a371e1ff8d56d8c8b801bdb"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a2a2b99ea3a371e1ff8d56d8c8b801bdb">tinyformat::detail::FormatIterator::accept</a></div><div class="ttdeci">void accept(const T &value)</div></div>
|
|
<div class="ttc" id="dash-tx_8cpp_html_ac8bf36fe0577cba66bccda3a6f7e80a4"><div class="ttname"><a href="dash-tx_8cpp.html#ac8bf36fe0577cba66bccda3a6f7e80a4">flags</a></div><div class="ttdeci">int flags</div><div class="ttdef"><b>Definition:</b> <a href="dash-tx_8cpp_source.html#l00326">dash-tx.cpp:326</a></div></div>
|
|
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1is__convertible_1_1succeed_html"><div class="ttname"><a href="structtinyformat_1_1detail_1_1is__convertible_1_1succeed.html">tinyformat::detail::is_convertible::succeed</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00162">tinyformat.h:162</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_ac1e16da97902d27500471ab71bc709a1"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#ac1e16da97902d27500471ab71bc709a1">tinyformat::detail::FormatIterator::m_wantWidth</a></div><div class="ttdeci">bool m_wantWidth</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00570">tinyformat.h:570</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1convertToInt_3_01T_00_01true_01_4_html_a7d03793b995eb4428bb13349004f5fcd"><div class="ttname"><a href="structtinyformat_1_1detail_1_1convertToInt_3_01T_00_01true_01_4.html#a7d03793b995eb4428bb13349004f5fcd">tinyformat::detail::convertToInt< T, true >::invoke</a></div><div class="ttdeci">static int invoke(const T &value)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00247">tinyformat.h:247</a></div></div>
|
|
<div class="ttc" id="tinyformat_8h_html_ae166167e47ad25bdbd4a494ab46083b2"><div class="ttname"><a href="tinyformat_8h.html#ae166167e47ad25bdbd4a494ab46083b2">TINYFORMAT_DEFINE_FORMATVALUE_CHAR</a></div><div class="ttdeci">#define TINYFORMAT_DEFINE_FORMATVALUE_CHAR(charType)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00297">tinyformat.h:297</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a219d15b3b08e2e2039043d2e992cc0b4a5d0e44bf22d5a33b12af70fab06a595d"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5d0e44bf22d5a33b12af70fab06a595d">tinyformat::detail::FormatIterator::Flag_VariableWidth</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00449">tinyformat.h:449</a></div></div>
|
|
<div class="ttc" id="tinyformat_8h_html_abec92c1222dcfd430881422760e85c58"><div class="ttname"><a href="tinyformat_8h.html#abec92c1222dcfd430881422760e85c58">TINYFORMAT_DEFINE_FORMAT_C_STRING_TRUNCATE</a></div><div class="ttdeci">#define TINYFORMAT_DEFINE_FORMAT_C_STRING_TRUNCATE(type)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00510">tinyformat.h:510</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1convertToInt_html"><div class="ttname"><a href="structtinyformat_1_1detail_1_1convertToInt.html">tinyformat::detail::convertToInt</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00234">tinyformat.h:234</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a048d56660908fe084fc9930bad352c8e"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a048d56660908fe084fc9930bad352c8e">tinyformat::detail::FormatIterator::formatCStringTruncate</a></div><div class="ttdeci">static bool formatCStringTruncate(std::ostream &, const T &, std::streamsize)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00505">tinyformat.h:505</a></div></div>
|
|
<div class="ttc" id="namespacefix-copyright-headers_html_aed10e06fbf20b2e50f73ff2d61f59e45"><div class="ttname"><a href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">fix-copyright-headers.n</a></div><div class="ttdeci">int n</div><div class="ttdef"><b>Definition:</b> <a href="fix-copyright-headers_8py_source.html#l00046">fix-copyright-headers.py:46</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_ae108fe31903bd1a25e70d2a257f42dfc"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#ae108fe31903bd1a25e70d2a257f42dfc">tinyformat::detail::FormatIterator::m_fmt</a></div><div class="ttdeci">const char * m_fmt</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00567">tinyformat.h:567</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_ac8778a5a4a79d0357bb349b3a834675c"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#ac8778a5a4a79d0357bb349b3a834675c">tinyformat::detail::FormatIterator::m_origWidth</a></div><div class="ttdeci">std::streamsize m_origWidth</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00575">tinyformat.h:575</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_ab22b2cc7248efb281d477dffe7b74306"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22b2cc7248efb281d477dffe7b74306">tinyformat::detail::FormatIterator::m_variableWidth</a></div><div class="ttdeci">int m_variableWidth</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00572">tinyformat.h:572</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a6a02fa0be4c3027e4687632240ed61b0"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a6a02fa0be4c3027e4687632240ed61b0">tinyformat::detail::FormatIterator::m_origFill</a></div><div class="ttdeci">char m_origFill</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00578">tinyformat.h:578</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1convertToInt_html_a1e1c0d85c6afc3bb21d2bc9458b3feb1"><div class="ttname"><a href="structtinyformat_1_1detail_1_1convertToInt.html#a1e1c0d85c6afc3bb21d2bc9458b3feb1">tinyformat::detail::convertToInt::invoke</a></div><div class="ttdeci">static int invoke(const T &)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00236">tinyformat.h:236</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a0bdab4360fa0e2a5877497bc4b789bed"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a0bdab4360fa0e2a5877497bc4b789bed">tinyformat::detail::FormatIterator::m_wantPrecision</a></div><div class="ttdeci">bool m_wantPrecision</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00571">tinyformat.h:571</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a46377a804f72dbad1e508d2fbaa18ce9"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a46377a804f72dbad1e508d2fbaa18ce9">tinyformat::detail::FormatIterator::finish</a></div><div class="ttdeci">void finish()</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00469">tinyformat.h:469</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a219d15b3b08e2e2039043d2e992cc0b4a19e53a79433733d40dc1349ce52f3284"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a19e53a79433733d40dc1349ce52f3284">tinyformat::detail::FormatIterator::Flag_VariablePrecision</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00450">tinyformat.h:450</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1formatValueAsType_html_a126bc5958024c456851f08fa380d1cac"><div class="ttname"><a href="structtinyformat_1_1detail_1_1formatValueAsType.html#a126bc5958024c456851f08fa380d1cac">tinyformat::detail::formatValueAsType::invoke</a></div><div class="ttdeci">static void invoke(std::ostream &, const T &)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00199">tinyformat.h:199</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1is__convertible_html_a304a3fb17a674e61c688dd1219875870"><div class="ttname"><a href="structtinyformat_1_1detail_1_1is__convertible.html#a304a3fb17a674e61c688dd1219875870">tinyformat::detail::is_convertible::tryConvert</a></div><div class="ttdeci">static fail tryConvert(...)</div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1is__convertible_html"><div class="ttname"><a href="structtinyformat_1_1detail_1_1is__convertible.html">tinyformat::detail::is_convertible</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00157">tinyformat.h:157</a></div></div>
|
|
<div class="ttc" id="tinyformat_8h_html_a6aa2353acc671b972658fd73a813b960"><div class="ttname"><a href="tinyformat_8h.html#a6aa2353acc671b972658fd73a813b960">TINYFORMAT_NOINLINE</a></div><div class="ttdeci">#define TINYFORMAT_NOINLINE</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00141">tinyformat.h:141</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1is__convertible_1_1fail_html_a5d18f7fcac212bbe55692586aee8954d"><div class="ttname"><a href="structtinyformat_1_1detail_1_1is__convertible_1_1fail.html#a5d18f7fcac212bbe55692586aee8954d">tinyformat::detail::is_convertible::fail::dummy</a></div><div class="ttdeci">char dummy[2]</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00161">tinyformat.h:161</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a219d15b3b08e2e2039043d2e992cc0b4a5b65abd67b2208298644ddc94687e390"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a5b65abd67b2208298644ddc94687e390">tinyformat::detail::FormatIterator::Flag_TruncateToPrecision</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00447">tinyformat.h:447</a></div></div>
|
|
<div class="ttc" id="namespacetinyformat_html_adc03c92f312158ae351d38ac867b9296"><div class="ttname"><a href="namespacetinyformat.html#adc03c92f312158ae351d38ac867b9296">tinyformat::formatValue</a></div><div class="ttdeci">void formatValue(std::ostream &out, const char *, const char *fmtEnd, const T &value)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00268">tinyformat.h:268</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a219d15b3b08e2e2039043d2e992cc0b4a9ab97a1e3a40d92f84e93fa8358482aa"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4a9ab97a1e3a40d92f84e93fa8358482aa">tinyformat::detail::FormatIterator::Flag_None</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00446">tinyformat.h:446</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a700ea30dbed93c28c499ac01c59a78a4"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a700ea30dbed93c28c499ac01c59a78a4">tinyformat::detail::FormatIterator::~FormatIterator</a></div><div class="ttdeci">~FormatIterator()</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00478">tinyformat.h:478</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1is__wchar_html_a2006c700bf3264d6002993949bbaaac9"><div class="ttname"><a href="structtinyformat_1_1detail_1_1is__wchar.html#a2006c700bf3264d6002993949bbaaac9">tinyformat::detail::is_wchar::tinyformat_wchar_is_not_supported</a></div><div class="ttdeci">int tinyformat_wchar_is_not_supported</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00187">tinyformat.h:187</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_abbd64cfa07885f2310b533d233ea4a4f"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#abbd64cfa07885f2310b533d233ea4a4f">tinyformat::detail::FormatIterator::m_out</a></div><div class="ttdeci">std::ostream & m_out</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00566">tinyformat.h:566</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1is__wchar_html"><div class="ttname"><a href="structtinyformat_1_1detail_1_1is__wchar.html">tinyformat::detail::is_wchar</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00187">tinyformat.h:187</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_ab22fcacd5559bea7e2e6c9ed3e3025b7"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#ab22fcacd5559bea7e2e6c9ed3e3025b7">tinyformat::detail::FormatIterator::m_variablePrecision</a></div><div class="ttdeci">int m_variablePrecision</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00573">tinyformat.h:573</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html">tinyformat::detail::FormatIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00440">tinyformat.h:440</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a86f3a5d86ac25396cd1ec36bea7122e4"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a86f3a5d86ac25396cd1ec36bea7122e4">tinyformat::detail::FormatIterator::m_extraFlags</a></div><div class="ttdeci">unsigned int m_extraFlags</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00568">tinyformat.h:568</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_af533575dd881e88fc8630baa70d1cd52"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#af533575dd881e88fc8630baa70d1cd52">tinyformat::detail::FormatIterator::m_origPrecision</a></div><div class="ttdeci">std::streamsize m_origPrecision</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00576">tinyformat.h:576</a></div></div>
|
|
<div class="ttc" id="tinyformat_8h_html_aab516d7d4e92fe18eca4a9d40f450a80"><div class="ttname"><a href="tinyformat_8h.html#aab516d7d4e92fe18eca4a9d40f450a80">TINYFORMAT_ERROR</a></div><div class="ttdeci">#define TINYFORMAT_ERROR(reasonString)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00112">tinyformat.h:112</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1formatValueAsType_3_01T_00_01fmtT_00_01true_01_4_html_a7680bc0f7b6b5eee0e27c494812fb667"><div class="ttname"><a href="structtinyformat_1_1detail_1_1formatValueAsType_3_01T_00_01fmtT_00_01true_01_4.html#a7680bc0f7b6b5eee0e27c494812fb667">tinyformat::detail::formatValueAsType< T, fmtT, true >::invoke</a></div><div class="ttdeci">static void invoke(std::ostream &out, const T &value)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00206">tinyformat.h:206</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a219d15b3b08e2e2039043d2e992cc0b4"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a219d15b3b08e2e2039043d2e992cc0b4">tinyformat::detail::FormatIterator::ExtraFormatFlags</a></div><div class="ttdeci">ExtraFormatFlags</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00444">tinyformat.h:444</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1is__convertible_html_a399ca4333bd68f88a5d5a2430f804df2"><div class="ttname"><a href="structtinyformat_1_1detail_1_1is__convertible.html#a399ca4333bd68f88a5d5a2430f804df2">tinyformat::detail::is_convertible::value</a></div><div class="ttdeci">static const bool value</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00178">tinyformat.h:178</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1is__convertible_1_1fail_html"><div class="ttname"><a href="structtinyformat_1_1detail_1_1is__convertible_1_1fail.html">tinyformat::detail::is_convertible::fail</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00161">tinyformat.h:161</a></div></div>
|
|
<div class="ttc" id="namespaceextract__strings__qt_html_ab8166b91ad54a98ce8450593d2a3d827"><div class="ttname"><a href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">extract_strings_qt.out</a></div><div class="ttdeci">out</div><div class="ttdef"><b>Definition:</b> <a href="extract__strings__qt_8py_source.html#l00056">extract_strings_qt.py:56</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_abe80c91198f0f5f2649d584cd36f8df8"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#abe80c91198f0f5f2649d584cd36f8df8">tinyformat::detail::FormatIterator::m_origFlags</a></div><div class="ttdeci">std::ios::fmtflags m_origFlags</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00577">tinyformat.h:577</a></div></div>
|
|
<div class="ttc" id="tinyformat_8h_html_ae2e4f3482a2c4746b3f7429d62e252a7"><div class="ttname"><a href="tinyformat_8h.html#ae2e4f3482a2c4746b3f7429d62e252a7">TINYFORMAT_FOREACH_ARGNUM</a></div><div class="ttdeci">#define TINYFORMAT_FOREACH_ARGNUM(m)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00430">tinyformat.h:430</a></div></div>
|
|
<div class="ttc" id="tinyformat_8h_html_a85c1bcb25897c3da7820c02e7ba63f11"><div class="ttname"><a href="tinyformat_8h.html#a85c1bcb25897c3da7820c02e7ba63f11">TINYFORMAT_MAKE_FORMAT_FUNCS</a></div><div class="ttdeci">#define TINYFORMAT_MAKE_FORMAT_FUNCS(n)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00930">tinyformat.h:930</a></div></div>
|
|
<div class="ttc" id="classtinyformat_1_1detail_1_1FormatIterator_html_a4fab0ac9b2555c20c304da12668020ff"><div class="ttname"><a href="classtinyformat_1_1detail_1_1FormatIterator.html#a4fab0ac9b2555c20c304da12668020ff">tinyformat::detail::FormatIterator::parseIntAndAdvance</a></div><div class="ttdeci">static int parseIntAndAdvance(const char *&c)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00493">tinyformat.h:493</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1formatValueAsType_html"><div class="ttname"><a href="structtinyformat_1_1detail_1_1formatValueAsType.html">tinyformat::detail::formatValueAsType</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00197">tinyformat.h:197</a></div></div>
|
|
<div class="ttc" id="namespacetinyformat_1_1detail_html_aa4b0590b3e34562c2d252a2086cec7ba"><div class="ttname"><a href="namespacetinyformat_1_1detail.html#aa4b0590b3e34562c2d252a2086cec7ba">tinyformat::detail::format</a></div><div class="ttdeci">void format(FormatIterator &fmtIter)</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00870">tinyformat.h:870</a></div></div>
|
|
<div class="ttc" id="namespacetinyformat_html"><div class="ttname"><a href="namespacetinyformat.html">tinyformat</a></div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00104">tinyformat.h:104</a></div></div>
|
|
<div class="ttc" id="structtinyformat_1_1detail_1_1is__convertible_1_1succeed_html_a7f25789e5f4b4d4fbc8999f9f096cbf6"><div class="ttname"><a href="structtinyformat_1_1detail_1_1is__convertible_1_1succeed.html#a7f25789e5f4b4d4fbc8999f9f096cbf6">tinyformat::detail::is_convertible::succeed::dummy</a></div><div class="ttdeci">char dummy</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l00162">tinyformat.h:162</a></div></div>
|
|
<div class="ttc" id="namespacerpcuser_html_a637791b4450c02d511291cd297ce12df"><div class="ttname"><a href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">rpcuser.result</a></div><div class="ttdeci">result</div><div class="ttdef"><b>Definition:</b> <a href="rpcuser_8py_source.html#l00037">rpcuser.py:37</a></div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="tinyformat_8h.html">tinyformat.h</a></li>
|
|
<li class="footer">Generated on Thu Dec 14 2017 13:15:09 for Dash Core by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|