Mercurial > minori
annotate dep/fmt/doc/html/_sources/index.rst.txt @ 368:6d37a998cf91
gui/dialog: consolidate win32 dark theme cruft into a single class
| author | Paper <paper@tflc.us> | 
|---|---|
| date | Fri, 25 Jul 2025 10:05:23 -0400 | 
| parents | 1faa72660932 | 
| children | 
| rev | line source | 
|---|---|
| 
343
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
1 Overview | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
2 ======== | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
3 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
4 **{fmt}** is an open-source formatting library providing a fast and safe | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
5 alternative to C stdio and C++ iostreams. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
6 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
7 .. raw:: html | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
8 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
9 <div class="panel panel-default"> | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
10 <div class="panel-heading">What users say:</div> | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
11 <div class="panel-body"> | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
12 Thanks for creating this library. It’s been a hole in C++ for | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
13 a long time. I’ve used both <code>boost::format</code> and | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
14 <code>loki::SPrintf</code>, and neither felt like the right answer. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
15 This does. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
16 </div> | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
17 </div> | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
18 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
19 .. _format-api-intro: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
20 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
21 Format API | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
22 ---------- | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
23 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
24 The format API is similar in spirit to the C ``printf`` family of function but | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
25 is safer, simpler and several times `faster | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
26 <https://www.zverovich.net/2020/06/13/fast-int-to-string-revisited.html>`_ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
27 than common standard library implementations. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
28 The `format string syntax <syntax.html>`_ is similar to the one used by | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
29 `str.format <https://docs.python.org/3/library/stdtypes.html#str.format>`_ in | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
30 Python: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
31 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
32 .. code:: c++ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
33 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
34 std::string s = fmt::format("The answer is {}.", 42); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
35 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
36 The ``fmt::format`` function returns a string "The answer is 42.". You can use | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
37 ``fmt::memory_buffer`` to avoid constructing ``std::string``: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
38 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
39 .. code:: c++ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
40 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
41 auto out = fmt::memory_buffer(); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
42 fmt::format_to(std::back_inserter(out), | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
43 "For a moment, {} happened.", "nothing"); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
44 auto data = out.data(); // pointer to the formatted data | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
45 auto size = out.size(); // size of the formatted data | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
46 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
47 The ``fmt::print`` function performs formatting and writes the result to a stream: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
48 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
49 .. code:: c++ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
50 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
51 fmt::print(stderr, "System error code = {}\n", errno); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
52 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
53 If you omit the file argument the function will print to ``stdout``: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
54 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
55 .. code:: c++ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
56 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
57 fmt::print("Don't {}\n", "panic"); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
58 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
59 The format API also supports positional arguments useful for localization: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
60 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
61 .. code:: c++ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
62 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
63 fmt::print("I'd rather be {1} than {0}.", "right", "happy"); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
64 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
65 You can pass named arguments with ``fmt::arg``: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
66 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
67 .. code:: c++ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
68 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
69 fmt::print("Hello, {name}! The answer is {number}. Goodbye, {name}.", | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
70 fmt::arg("name", "World"), fmt::arg("number", 42)); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
71 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
72 If your compiler supports C++11 user-defined literals, the suffix ``_a`` offers | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
73 an alternative, slightly terser syntax for named arguments: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
74 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
75 .. code:: c++ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
76 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
77 using namespace fmt::literals; | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
78 fmt::print("Hello, {name}! The answer is {number}. Goodbye, {name}.", | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
79 "name"_a="World", "number"_a=42); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
80 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
81 .. _safety: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
82 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
83 Safety | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
84 ------ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
85 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
86 The library is fully type safe, automatic memory management prevents buffer | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
87 overflow, errors in format strings are reported using exceptions or at compile | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
88 time. For example, the code | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
89 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
90 .. code:: c++ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
91 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
92 fmt::format("The answer is {:d}", "forty-two"); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
93 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
94 throws the ``format_error`` exception because the argument ``"forty-two"`` is a | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
95 string while the format code ``d`` only applies to integers. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
96 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
97 The code | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
98 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
99 .. code:: c++ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
100 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
101 format(FMT_STRING("The answer is {:d}"), "forty-two"); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
102 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
103 reports a compile-time error on compilers that support relaxed ``constexpr``. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
104 See `here <api.html#compile-time-format-string-checks>`_ for details. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
105 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
106 The following code | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
107 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
108 .. code:: c++ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
109 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
110 fmt::format("Cyrillic letter {}", L'\x42e'); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
111 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
112 produces a compile-time error because wide character ``L'\x42e'`` cannot be | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
113 formatted into a narrow string. For comparison, writing a wide character to | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
114 ``std::ostream`` results in its numeric value being written to the stream | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
115 (i.e. 1070 instead of letter 'ю' which is represented by ``L'\x42e'`` if we | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
116 use Unicode) which is rarely desirable. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
117 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
118 Compact Binary Code | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
119 ------------------- | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
120 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
121 The library produces compact per-call compiled code. For example | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
122 (`godbolt <https://godbolt.org/g/TZU4KF>`_), | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
123 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
124 .. code:: c++ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
125 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
126 #include <fmt/core.h> | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
127 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
128 int main() { | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
129 fmt::print("The answer is {}.", 42); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
130 } | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
131 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
132 compiles to just | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
133 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
134 .. code:: asm | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
135 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
136 main: # @main | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
137 sub rsp, 24 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
138 mov qword ptr [rsp], 42 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
139 mov rcx, rsp | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
140 mov edi, offset .L.str | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
141 mov esi, 17 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
142 mov edx, 1 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
143 call fmt::v7::vprint(fmt::v7::basic_string_view<char>, fmt::v7::format_args) | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
144 xor eax, eax | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
145 add rsp, 24 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
146 ret | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
147 .L.str: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
148 .asciz "The answer is {}." | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
149 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
150 .. _portability: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
151 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
152 Portability | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
153 ----------- | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
154 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
155 The library is highly portable and relies only on a small set of C++11 features: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
156 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
157 * variadic templates | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
158 * type traits | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
159 * rvalue references | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
160 * decltype | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
161 * trailing return types | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
162 * deleted functions | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
163 * alias templates | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
164 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
165 These are available in GCC 4.8, Clang 3.4, MSVC 19.0 (2015) and more recent | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
166 compiler version. For older compilers use {fmt} `version 4.x | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
167 <https://github.com/fmtlib/fmt/releases/tag/4.1.0>`_ which is maintained and | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
168 only requires C++98. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
169 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
170 The output of all formatting functions is consistent across platforms. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
171 For example, | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
172 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
173 .. code:: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
174 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
175 fmt::print("{}", std::numeric_limits<double>::infinity()); | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
176 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
177 always prints ``inf`` while the output of ``printf`` is platform-dependent. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
178 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
179 .. _ease-of-use: | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
180 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
181 Ease of Use | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
182 ----------- | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
183 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
184 {fmt} has a small self-contained code base with the core library consisting of | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
185 just three header files and no external dependencies. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
186 A permissive MIT `license <https://github.com/fmtlib/fmt#license>`_ allows | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
187 using the library both in open-source and commercial projects. | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
188 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
189 `Learn more... <contents.html>`_ | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
190 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
191 .. raw:: html | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
192 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
193 <a class="btn btn-success" href="https://github.com/fmtlib/fmt">GitHub Repository</a> | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
194 | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
195 <div class="section footer"> | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
196 <iframe src="https://ghbtns.com/github-btn.html?user=fmtlib&repo=fmt&type=watch&count=true" | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
197 class="github-btn" width="100" height="20"></iframe> | 
| 
 
1faa72660932
*: transfer back to cmake from autotools
 
Paper <paper@paper.us.eu.org> 
parents:  
diff
changeset
 | 
198 </div> | 
