<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://temp.ufopaedia.org/index.php?action=history&amp;feed=atom&amp;title=Coding_Style_%28OpenApoc%29</id>
	<title>Coding Style (OpenApoc) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://temp.ufopaedia.org/index.php?action=history&amp;feed=atom&amp;title=Coding_Style_%28OpenApoc%29"/>
	<link rel="alternate" type="text/html" href="https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;action=history"/>
	<updated>2026-05-01T05:52:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=126344&amp;oldid=prev</id>
		<title>Deldonut1: Re-add 9 coding conventions from CODE_STYLE.md that were missing: comments style, trivial one-line functions, ownership guidance, static_assert, iterator exception, forward declaration limits, Yoda conditionals, numeric_limits, short variable names</title>
		<link rel="alternate" type="text/html" href="https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=126344&amp;oldid=prev"/>
		<updated>2026-03-01T23:05:58Z</updated>

		<summary type="html">&lt;p&gt;Re-add 9 coding conventions from CODE_STYLE.md that were missing: comments style, trivial one-line functions, ownership guidance, static_assert, iterator exception, forward declaration limits, Yoda conditionals, numeric_limits, short variable names&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:05, 1 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l137&quot;&gt;Line 137:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 137:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Exception&#039;&#039;&#039;: Trivial functions (a single statement fitting within 100 columns) may use the definition and body on one line:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;int getX() const { return x; }&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;This is enforced by &amp;lt;code&amp;gt;clang-format&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;AllowShortFunctionsOnASingleLine: All&amp;lt;/code&amp;gt;).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Naming ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Naming ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l151&quot;&gt;Line 151:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 159:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;lower_case&amp;lt;/code&amp;gt; || Labels&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;lower_case&amp;lt;/code&amp;gt; || Labels&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Short variable names (&amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) are fine when the meaning is obvious from context.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Types ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Types ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l159&quot;&gt;Line 159:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 169:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* No C-style casts &amp;amp;mdash; use &amp;lt;code&amp;gt;static_cast&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dynamic_cast&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;reinterpret_cast&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* No C-style casts &amp;amp;mdash; use &amp;lt;code&amp;gt;static_cast&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dynamic_cast&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;reinterpret_cast&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Prefer &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; brace initialization&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Prefer &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; brace initialization&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Prefer &amp;lt;code&amp;gt;std::numeric_limits&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt; over C-style &amp;lt;code&amp;gt;MAX_INT&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;INT_MAX&amp;lt;/code&amp;gt; macros&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Smart Pointers ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Smart Pointers ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l181&quot;&gt;Line 181:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 192:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Prefer &amp;lt;code&amp;gt;up&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt; (exclusive ownership) over &amp;lt;code&amp;gt;sp&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt; unless shared ownership is genuinely needed&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Prefer &amp;lt;code&amp;gt;up&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt; (exclusive ownership) over &amp;lt;code&amp;gt;sp&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt; unless shared ownership is genuinely needed&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Use &amp;lt;code&amp;gt;std::move()&amp;lt;/code&amp;gt; to transfer &amp;lt;code&amp;gt;up&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt; ownership&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Use &amp;lt;code&amp;gt;std::move()&amp;lt;/code&amp;gt; to transfer &amp;lt;code&amp;gt;up&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt; ownership&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Ownership guideline&#039;&#039;&#039;: If ownership of a member is tied to the class, use a direct member (no pointer). If a reference owned by another object is guaranteed to outlive the class, use a &amp;lt;code&amp;gt;&amp;amp;amp;reference&amp;lt;/code&amp;gt; member. Otherwise use &amp;lt;code&amp;gt;up&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sp&amp;amp;lt;&amp;amp;gt;&amp;lt;/code&amp;gt; depending on whether ownership is exclusive or shared.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Templates ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Templates ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l225&quot;&gt;Line 225:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 237:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; aggressively&amp;#039;&amp;#039;&amp;#039;: const member functions, const parameters, const return types, const local variables&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; aggressively&amp;#039;&amp;#039;&amp;#039;: const member functions, const parameters, const return types, const local variables&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Range-for loops: &amp;lt;code&amp;gt;for (auto &amp;amp;element : container)&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;for (const auto &amp;amp;element : container)&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Range-for loops: &amp;lt;code&amp;gt;for (auto &amp;amp;element : container)&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;for (const auto &amp;amp;element : container)&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** &#039;&#039;&#039;Exception&#039;&#039;&#039;: When removing elements during iteration, use an iterator-based loop instead of range-for&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Prefer &amp;lt;code&amp;gt;emplace()&amp;lt;/code&amp;gt; over &amp;lt;code&amp;gt;insert()&amp;lt;/code&amp;gt; in STL containers&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Prefer &amp;lt;code&amp;gt;emplace()&amp;lt;/code&amp;gt; over &amp;lt;code&amp;gt;insert()&amp;lt;/code&amp;gt; in STL containers&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l254&quot;&gt;Line 254:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 267:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;} // namespace OpenApoc&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;} // namespace OpenApoc&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Use &amp;lt;code&amp;gt;static_assert()&amp;lt;/code&amp;gt; to verify assumptions about alignment, packing (e.g., when reading structs from original game files), or template restrictions&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Avoid Yoda conditionals &amp;amp;mdash; write &amp;lt;code&amp;gt;var == 1&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;1 == var&amp;lt;/code&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Comments ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Prefer &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; for single-line comments&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Multi-line &amp;lt;code&amp;gt;/* */&amp;lt;/code&amp;gt; comments: align the &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; on each intermediate line&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Use &amp;lt;code&amp;gt;//TODO:&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;//FIXME:&amp;lt;/code&amp;gt; markers to flag work-in-progress or known issues&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Do not comment for the sake of it &amp;amp;mdash; if the code can be made clearer, prefer that over adding a comment&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Logging ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Logging ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l295&quot;&gt;Line 295:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 318:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Local headers use paths &amp;#039;&amp;#039;&amp;#039;relative to the OpenApoc root&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;&amp;quot;framework/logger.h&amp;quot;&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;&amp;quot;../logger.h&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;logger.h&amp;quot;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Local headers use paths &amp;#039;&amp;#039;&amp;#039;relative to the OpenApoc root&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;&amp;quot;framework/logger.h&amp;quot;&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;&amp;quot;../logger.h&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;logger.h&amp;quot;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Prefer forward declarations&amp;#039;&amp;#039;&amp;#039; over &amp;lt;code&amp;gt;#include&amp;lt;/code&amp;gt; in headers where possible&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Prefer forward declarations&amp;#039;&amp;#039;&amp;#039; over &amp;lt;code&amp;gt;#include&amp;lt;/code&amp;gt; in headers where possible&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** Forward declarations are &#039;&#039;&#039;not possible&#039;&#039;&#039; for templates, non-class types (e.g., &amp;lt;code&amp;gt;enum class&amp;lt;/code&amp;gt;), and superclasses. When in doubt, try building without the include and see what fails.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key tempufo_wiki:diff:1.41:old-126333:rev-126344:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Deldonut1</name></author>
	</entry>
	<entry>
		<id>https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=126333&amp;oldid=prev</id>
		<title>Deldonut1: Major rewrite: updated to C++17/clang-format-18; added smart pointers; logging; strings; review expectations</title>
		<link rel="alternate" type="text/html" href="https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=126333&amp;oldid=prev"/>
		<updated>2026-03-01T21:01:43Z</updated>

		<summary type="html">&lt;p&gt;Major rewrite: updated to C++17/clang-format-18; added smart pointers; logging; strings; review expectations&lt;/p&gt;
&lt;a href=&quot;https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;amp;diff=126333&amp;amp;oldid=89009&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Deldonut1</name></author>
	</entry>
	<entry>
		<id>https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=89009&amp;oldid=prev</id>
		<title>SupSuper at 19:58, 9 March 2019</title>
		<link rel="alternate" type="text/html" href="https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=89009&amp;oldid=prev"/>
		<updated>2019-03-09T19:58:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:58, 9 March 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l485&quot;&gt;Line 485:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 485:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Comments:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Comments:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* either // or /* */ is fine - prefer // for single line&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* either // or /* */ is fine - prefer // for single line&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* If doing multi line /&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\&lt;/del&gt;*-style comments have an aligned &#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\&lt;/del&gt;*&#039; with at the beginning of each subseqent line:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* If doing multi line /*-style comments have an aligned &#039;*&#039; with at the beginning of each subseqent line:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/* first line&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/* first line&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key tempufo_wiki:diff:1.41:old-89008:rev-89009:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>SupSuper</name></author>
	</entry>
	<entry>
		<id>https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=89008&amp;oldid=prev</id>
		<title>SupSuper at 19:57, 9 March 2019</title>
		<link rel="alternate" type="text/html" href="https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=89008&amp;oldid=prev"/>
		<updated>2019-03-09T19:57:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:57, 9 March 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l78&quot;&gt;Line 78:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 78:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if (a == 0)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if (a == 0)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* References and pointers: &amp;amp; and&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*&lt;/del&gt;* align to right (to variable) not type&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* References and pointers: &amp;amp; and * align to right (to variable) not type&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	float&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*&lt;/del&gt;*pointerToFloat;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	float *pointerToFloat;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l484&quot;&gt;Line 484:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 484:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Comments:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Comments:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* either // or /&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*&lt;/del&gt;**/ is fine - prefer // for single line&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* either // or /* */ is fine - prefer // for single line&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* If doing multi line /\*-style comments have an aligned &amp;#039;\*&amp;#039; with at the beginning of each subseqent line:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* If doing multi line /\*-style comments have an aligned &amp;#039;\*&amp;#039; with at the beginning of each subseqent line:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/* first line&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/* first line&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*&lt;/del&gt;* second line&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;* second line&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*&lt;/del&gt;* last line&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*&lt;/del&gt;*/&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;* last line */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Don&amp;#039;t comment for the sake of it&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Don&amp;#039;t comment for the sake of it&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key tempufo_wiki:diff:1.41:old-89007:rev-89008:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>SupSuper</name></author>
	</entry>
	<entry>
		<id>https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=89007&amp;oldid=prev</id>
		<title>SupSuper at 19:29, 9 March 2019</title>
		<link rel="alternate" type="text/html" href="https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=89007&amp;oldid=prev"/>
		<updated>2019-03-09T19:29:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:29, 9 March 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;C++11 features are heavily encouraged - patterns from &amp;#039;older&amp;#039; c++ versions that have been superceded should be avoided.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;C++11 features are heavily encouraged - patterns from &amp;#039;older&amp;#039; c++ versions that have been superceded should be avoided.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The formatting sections of this document are enforced by the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;``clang-format`` tool &lt;/del&gt;[http://llvm.org/releases/4.0.0/tools/clang/docs/ClangFormat.html]. Currently the &#039;4.0&#039; version of &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;``&lt;/del&gt;clang-format&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`` &lt;/del&gt;is to be used. The configuration file &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;``&lt;/del&gt;.clang-format&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`` &lt;/del&gt;in the root of the OpenApoc source repository should match the formatting guidelines specified below.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The formatting sections of this document are enforced by the [http://llvm.org/releases/4.0.0/tools/clang/docs/ClangFormat.html &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;clang-format tool&lt;/ins&gt;]. Currently the &#039;4.0&#039; version of &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;clang-format&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;is to be used. The configuration file &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;.clang-format&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;in the root of the OpenApoc source repository should match the formatting guidelines specified below.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;With this, it is highly recommended to run &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;``&lt;/del&gt;clang-format&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`` &lt;/del&gt;on all modified files before check-in. This can be run on source files with the following command:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;With this, it is highly recommended to run &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;clang-format&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;on all modified files before check-in. This can be run on source files with the following command:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l21&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When ran from the root of the OpenApoc source repository it should automatically use the supplied &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;``&lt;/del&gt;.clang-format&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`` &lt;/del&gt;configuration file. The tool also supports modifying the supplied source files to match the configured format when passed the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;``&lt;/del&gt;-i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`` &lt;/del&gt;flag:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When ran from the root of the OpenApoc source repository it should automatically use the supplied &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;.clang-format&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;configuration file. The tool also supports modifying the supplied source files to match the configured format when passed the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;-i&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;flag:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l27&quot;&gt;Line 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When using the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;``&lt;/del&gt;CMake&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`` &lt;/del&gt;build system (as used on Unix-based platforms), there is a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;``&lt;/del&gt;format-sources&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`` &lt;/del&gt;make target that will run &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;``&lt;/del&gt;clang-format -i&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`` &lt;/del&gt;on all source files within the OpenApoc repositry tree. This provides a single command that can be run before commiting:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When using the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;CMake&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;build system (as used on Unix-based platforms), there is a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;format-sources&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;make target that will run &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;clang-format -i&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;on all source files within the OpenApoc repositry tree. This provides a single command that can be run before commiting:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot;&gt;Line 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the future, it may be possible to use &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;``&lt;/del&gt;clang-tidy&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;``&lt;/del&gt;, also from the clang project, to enforce more of the non-formatting sections of this style guideline. One example of this is an identifier name checking tool.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the future, it may be possible to use &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;clang-tidy&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;, also from the clang project, to enforce more of the non-formatting sections of this style guideline. One example of this is an identifier name checking tool.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key tempufo_wiki:diff:1.41:old-89006:rev-89007:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>SupSuper</name></author>
	</entry>
	<entry>
		<id>https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=89006&amp;oldid=prev</id>
		<title>SupSuper: Created page with &quot;This document specifies the guidelines for writing and formatting the c++ code that forms the core of OpenApoc.  Globally, we use &#039;standard&#039; c++11. This requires reasonably mo...&quot;</title>
		<link rel="alternate" type="text/html" href="https://temp.ufopaedia.org/index.php?title=Coding_Style_(OpenApoc)&amp;diff=89006&amp;oldid=prev"/>
		<updated>2019-03-09T19:24:33Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;This document specifies the guidelines for writing and formatting the c++ code that forms the core of OpenApoc.  Globally, we use &amp;#039;standard&amp;#039; c++11. This requires reasonably mo...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This document specifies the guidelines for writing and formatting the c++ code that forms the core of OpenApoc.&lt;br /&gt;
&lt;br /&gt;
Globally, we use &amp;#039;standard&amp;#039; c++11. This requires reasonably modern compilers (gcc 4.7+, MSVC 2013+ , clang 3.6+ have been tested). You should avoid using compiler-specific stuff where possible. Exceptions to this exist, but should be wrapped in a #ifdef:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#ifdef _MSC_VER&lt;br /&gt;
MSVCIsCrazySometimes&lt;br /&gt;
#else&lt;br /&gt;
// Everything else we support (gcc + clang) are pretty much extension-compatible&lt;br /&gt;
GCCIsntMuchBetter&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C++11 features are heavily encouraged - patterns from &amp;#039;older&amp;#039; c++ versions that have been superceded should be avoided.&lt;br /&gt;
&lt;br /&gt;
The formatting sections of this document are enforced by the ``clang-format`` tool [http://llvm.org/releases/4.0.0/tools/clang/docs/ClangFormat.html]. Currently the &amp;#039;4.0&amp;#039; version of ``clang-format`` is to be used. The configuration file ``.clang-format`` in the root of the OpenApoc source repository should match the formatting guidelines specified below.&lt;br /&gt;
&lt;br /&gt;
With this, it is highly recommended to run ``clang-format`` on all modified files before check-in. This can be run on source files with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
clang-format path/to/file.cpp path/to/file.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When ran from the root of the OpenApoc source repository it should automatically use the supplied ``.clang-format`` configuration file. The tool also supports modifying the supplied source files to match the configured format when passed the ``-i`` flag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
clang-format -i path/to/file.cpp path/to/file.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using the ``CMake`` build system (as used on Unix-based platforms), there is a ``format-sources`` make target that will run ``clang-format -i`` on all source files within the OpenApoc repositry tree. This provides a single command that can be run before commiting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make format-sources&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the future, it may be possible to use ``clang-tidy``, also from the clang project, to enforce more of the non-formatting sections of this style guideline. One example of this is an identifier name checking tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Indent ==&lt;br /&gt;
* Tabs for indenting, spaces for alignment, indenting by 1 tab for each new scope&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void function()&lt;br /&gt;
{&lt;br /&gt;
	reallyLongFunctionNameWithLotsOfArguments(argOne, argTwo,&lt;br /&gt;
	                                          argThree);&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Avoid going over 100 cols (at tab width of &amp;#039;4&amp;#039; spaces).&lt;br /&gt;
** If you find yourself going over this it&amp;#039;s often a hint to try to pull things out of loops/into functions&lt;br /&gt;
** Don&amp;#039;t break strings up to fit this, it looks ugly and makes things even harder to read.&lt;br /&gt;
* If you have to break, indent the following line by an extra tab&lt;br /&gt;
** When breaking a single statement, break the line before the next operator. Avoid having an operator as the last thing on a line.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void reallyLongFunctionNameIMeanThisIsReallyBadlyNamedWhateverIDontCareTheyPayMeAnyway(int parameterOne,&lt;br /&gt;
	int paramTwo, char theThirdOne)&lt;br /&gt;
{&lt;br /&gt;
	if (parameterOne == yetAnotherReallyLongLineHereComeSomeWordsBlaBlaBlaAreYouStillReadingThisComeOnDont&lt;br /&gt;
		&amp;amp;&amp;amp; youHaveBetterThingsToDo)&lt;br /&gt;
	{&lt;br /&gt;
		doWhatever();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Whitespace ==&lt;br /&gt;
* Spaces before and after operators&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	a = b;&lt;br /&gt;
	a &amp;amp;&amp;amp; b;&lt;br /&gt;
	a + b;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Space after if/when/else/for, space after :/; in for&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	for (auto &amp;amp;a: b)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* No spaces after function name (or function-like keywords like &amp;#039;sizeof&amp;#039;), but space after flow control keywords, space after comma for multiple args&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	func(a, b);&lt;br /&gt;
	if (a == 0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* References and pointers: &amp;amp; and** align to right (to variable) not type&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	float**pointerToFloat;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
* Indent 1 tab for each new scope&lt;br /&gt;
* New scope is _always_ surrounded by {} braces&lt;br /&gt;
* New scope has a &amp;#039;{&amp;#039; on the /next/ line at the indent of the old scope(not the new scope)&lt;br /&gt;
* closing scope &amp;#039;}&amp;#039; same indent at opening &amp;#039;{&amp;#039;, again on a new line&lt;br /&gt;
* New scope caused by:&lt;br /&gt;
** Functions&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void functionDefinition()&lt;br /&gt;
{&lt;br /&gt;
	newScopeHere();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** new conditional block (if/else/when/for)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	if (x)&lt;br /&gt;
	{&lt;br /&gt;
		doWhatever();&lt;br /&gt;
	}&lt;br /&gt;
	else if (y)&lt;br /&gt;
	{&lt;br /&gt;
		doWhateverTheSecond();&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		doThatLastThing();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** &amp;#039;switch&amp;#039;&lt;br /&gt;
** &amp;#039;case&amp;#039; also indents a new scope. {} are optional, based on if new stack variables are needed to handle the case.&lt;br /&gt;
*** Note switch should always have a default case unless over an enum class (where they may not if (and only if) every value is handled)&lt;br /&gt;
*** All &amp;#039;case&amp;#039; sections should have a &amp;#039;break&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	switch (a)&lt;br /&gt;
	{&lt;br /&gt;
		case A:&lt;br /&gt;
			doSomething();&lt;br /&gt;
			break;&lt;br /&gt;
		case B:&lt;br /&gt;
		{&lt;br /&gt;
			auto var = somethingElse();&lt;br /&gt;
			doSomethingElse(var);&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		default:&lt;br /&gt;
			doDefaultCase();&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Class/enum/struct declarations&lt;br /&gt;
*** note: public/private/protected are an exception to this, being aligned to &amp;#039;class&amp;#039; keyword, not &amp;#039;within&amp;#039; it&amp;#039;s scope&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
	int privateVariable;&lt;br /&gt;
public:&lt;br /&gt;
	void publicFunction();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Exception to this is &amp;#039;trivial&amp;#039; functions that have the definition &amp;amp; contents all on line line&lt;br /&gt;
** &amp;#039;Trivial&amp;#039; is defined by a single statement that fits within the 100-column limit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int Class::function() {return 0;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* New scope is not caused by:&lt;br /&gt;
** namespace (which should also have a comment stating the namespace name at the closing bracket)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
namespace OpenApoc&lt;br /&gt;
{&lt;br /&gt;
Class MyClass&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
	int x;&lt;br /&gt;
};&lt;br /&gt;
}; // namespace OpenApoc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** labels&lt;br /&gt;
* Labels and #preprocessor directives /always/ on column 0 (start of line) no matter the scope&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#if defined(LINUX)&lt;br /&gt;
	x = linuxFunction();&lt;br /&gt;
#else&lt;br /&gt;
	x = otherFunction();&lt;br /&gt;
#endif&lt;br /&gt;
	if (x)&lt;br /&gt;
	{&lt;br /&gt;
		goto error;&lt;br /&gt;
	}&lt;br /&gt;
error:&lt;br /&gt;
	return 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Case ==&lt;br /&gt;
* Namespaces should be CamelCase&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
namespace OpenApoc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Classes and enums should be CamelCase&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class MyClass&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;#039;enum class&amp;#039; members should be CamelCase&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
enum class MyEnum&lt;br /&gt;
{&lt;br /&gt;
	ValueOne,&lt;br /&gt;
	ValueTwo,&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* class methods and member variables (public/private/protected) should be camelBack&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	void someFunction();&lt;br /&gt;
	int someVariable;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Function parameters (public/private/protected) should be camelBack&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int function(int parameterOne, char secondOne)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Variables should be camelBack&lt;br /&gt;
** Don&amp;#039;t be afraid to use &amp;#039;short&amp;#039; variable names if it&amp;#039;s obvious&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void function()&lt;br /&gt;
{&lt;br /&gt;
	int localVariable = 0;&lt;br /&gt;
	int x = 1;&lt;br /&gt;
	int y = 5;&lt;br /&gt;
	for (int i = 0; i &amp;lt; 5; i++)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* class/global constants should be SHOUTY_CAPS, along with _all_ macros&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define OPENAPOC_VERSION &amp;quot;1.0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Labels should be lower_case:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exit_loop:&lt;br /&gt;
	goto exit_loop;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* All members should be initialised in all constructors if they don&amp;#039;t have a default constructor. You can use member initialisation in the class definition if this is clearer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
	int variableMember = 0;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
* Avoid typedef - use &amp;#039;struct&amp;#039; keyword where necessary in c-like code&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct MyStruct&lt;br /&gt;
{&lt;br /&gt;
	int x;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void myStructUser(struct MyStruct s)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* up&amp;lt;&amp;gt; sp&amp;lt;&amp;gt; wp&amp;lt;&amp;gt; aliases are defined for std::unique_ptr&amp;lt;&amp;gt;, std::shared_ptr&amp;lt;&amp;gt;, std::weak_ptr&amp;lt;&amp;gt; in &amp;quot;library/sp.h&amp;quot;. Use them instead of the verbose versions.&lt;br /&gt;
* Use anonymous namespaces for &amp;#039;file-local&amp;#039; stuff (instead of static, as you can wrap classes in it too)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
namespace&lt;br /&gt;
{&lt;br /&gt;
void localFunction()&lt;br /&gt;
}; // anonymous namespace&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* We provide a &amp;quot;UString&amp;quot; class. This should be used for _all_ strings, as it provides platform-local non-ascii charset handling&lt;br /&gt;
** All &amp;quot;char*&amp;quot;/std::string params are assumed to be in utf8 format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
* If templates help, go ahead, don&amp;#039;t avoid them&lt;br /&gt;
* prefer &amp;#039;typename&amp;#039; to &amp;#039;class&amp;#039;&lt;br /&gt;
* template types should be CamelCase&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template &amp;lt;typename LocalType&amp;gt; function(LocalType param)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;#039;short&amp;#039; typenames are OK if it&amp;#039;s obvious what&amp;#039;s going on&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
template &amp;lt;typename T&amp;gt; Class&amp;lt;T&amp;gt;::function()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Class declarations ==&lt;br /&gt;
* member functions camelCase()&lt;br /&gt;
* &amp;#039;public:&amp;#039; &amp;#039;private:&amp;#039; &amp;#039;protected:&amp;#039; are indented to the &amp;#039;class&amp;#039; keyword, everything within them indented to class scope.&lt;br /&gt;
** Always use &amp;#039;private&amp;#039;, even if that&amp;#039;s the default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
	int localVariable;&lt;br /&gt;
public:&lt;br /&gt;
	void publicFunction();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;#039;virtual&amp;#039; keyword only used for base class, &amp;#039;override&amp;#039; used for derived&lt;br /&gt;
** All classes with a virtual (or overrided) function _must_ specify a virtual destructor&lt;br /&gt;
* Inheritence should be on the same line as the &amp;#039;class&amp;#039; keyword (until you get to the column limit and break)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class BaseClass&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	virtual ~BaseClass();&lt;br /&gt;
	virtual void someFunction();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class SubClass : public BaseClass&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	void someFunction() override;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Never use both &amp;#039;virtual&amp;#039; and &amp;#039;override&lt;br /&gt;
* Don&amp;#039;t define an empty {} body in the header for constructors/destructors etc. - use &amp;#039;= default&amp;#039; instead&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class MyBaseClass&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	virtual ~MyBaseClass() = default;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* define pure virtual &amp;quot;virtual void func() = 0;&amp;quot; for &amp;#039;interface&amp;#039; classes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class MyInterface&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	virtual void functionBaseClassesMustOverride() = 0;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** No need for &amp;#039;pure&amp;#039; interface classes, they can have code that all subclasses will use!&lt;br /&gt;
* For trivial initial values prefer initialisers in the class declaration (It&amp;#039;s easier to see what&amp;#039;s set and cleans up constructor definitions)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	Type initialisedMember = 0;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* In constructors prefer initialisation of members with  initialiser list over assignment&lt;br /&gt;
** Good:&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
MyClass::MyClass(Type value) : member(value)&lt;br /&gt;
{&lt;br /&gt;
	doWhatever();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Bad:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MyClass::MyClass(Type value)&lt;br /&gt;
{&lt;br /&gt;
	member = value;&lt;br /&gt;
	doWhatever();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Initialisers should be in order of declaration in the class&lt;br /&gt;
** For example with the class:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	Type memberA;&lt;br /&gt;
	Type memberB;&lt;br /&gt;
&lt;br /&gt;
	MyClass(Type valueA, Type valueB);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Good:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MyClass::MyClass(Type valueA, Type valueB) : memberA(valueA), memberB(valueB) {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Bad:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MyClass::MyClass(Type valueA, Type valueB) : memberB(valueB), memberA(valueA) {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Use &amp;#039;struct&amp;#039; for &amp;#039;data-only&amp;#039; types&lt;br /&gt;
** Structs should _never_ have public/private/protected declarations, if there&amp;#039;s anything non-public you shouldn&amp;#039;t use a struct.&lt;br /&gt;
** Likely only going to be used within data reading/writing to files&lt;br /&gt;
*** Because of this you&amp;#039;re probably going to need to use &amp;#039;sized&amp;#039; typed (see &amp;lt;cstdint&amp;gt; header)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct DataFileSection&lt;br /&gt;
{&lt;br /&gt;
	uint32_t x;&lt;br /&gt;
	uint32_t y;&lt;br /&gt;
	uint32_t z;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** If using a struct to read in data, use a static_assert to ensure correct sizing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static_assert(sizeof(DataFileSection) == 12, &amp;quot;DataFileSection not expected 12 bytes&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If ownership of a member is tied to the class, don&amp;#039;t use a pointer and new/delete in constructor/destructor. Just use the type and initialise it correctly in the init list before the constructor.&lt;br /&gt;
** If the above is not possible (e.g. complex init requirements, &amp;#039;may be invalid and null&amp;#039; use a up&amp;lt;&amp;gt;&lt;br /&gt;
* If we /know/ a member reference owned by another object will be live for the duration of the class, use a &amp;amp;reference member&lt;br /&gt;
* Otherwise use a sp&amp;lt;&amp;gt;/up&amp;lt;&amp;gt; depending if it should take a reference and if having a &amp;#039;null&amp;#039; object makes sense.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
* Const functions where possible (IE not modifying any members)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
	int dataAccessor() const;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Const params where logically not to be modified&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void function(const Type&amp;amp; readOnlyParam)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Const returns where the caller should never modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
const Type&amp;amp; functionWhereYouCantModifyMyReturnThanks()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General code ==&lt;br /&gt;
* Where possible use auto&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	auto varableName = function();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Note where auto&amp;amp; may be better to avoid a copy&lt;br /&gt;
* sp&amp;lt;&amp;gt; up&amp;lt;&amp;gt; wp&amp;lt;&amp;gt; smart pointers&lt;br /&gt;
** make_shared() instead of new&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	auto var = std::make_shared&amp;lt;Type&amp;gt;(args);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** make_unique() would be nice, but a c++14 feature (may restrict compiler compatibility?), so you have to wrap&lt;br /&gt;
*** Use std::move to transfer up&amp;lt;&amp;gt; ownership&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	up&amp;lt;Type&amp;gt; var{new Type{args}};&lt;br /&gt;
	functionThatTakesOwnershipOfParam(std::move(var));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Never use a &amp;#039;naked&amp;#039; new - they should always be packaged immediately in a smart pointer&lt;br /&gt;
* Use emplace() in STL containers where possible over insert()&lt;br /&gt;
** Unless you explicitly want to copy an object in&lt;br /&gt;
* Use foreach loops where possible ( &amp;quot;for (auto &amp;amp;element : container)&amp;quot;)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	for (auto &amp;amp;element : container)&lt;br /&gt;
	{&lt;br /&gt;
		whatever(element);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Exception may be a &amp;#039;safe&amp;#039; iterator when possibly removing elements during loop, then use iterator and keep copy locally&lt;br /&gt;
* Where possible use &amp;#039;enum class&amp;#039;&lt;br /&gt;
* Naming variables - don&amp;#039;t be afraid of using &amp;#039;short&amp;#039; names (&amp;#039;i&amp;#039;) if it&amp;#039;s use is obvious&lt;br /&gt;
* While &amp;#039;descriptive&amp;#039; names are nice, shorter code is also nice. Don&amp;#039;t repeat context&lt;br /&gt;
** &amp;#039;x&amp;#039; is fine is we already know we&amp;#039;re doing something in coordinate space, no need to name it theXCoordinateOfTheCityMapInTiles&lt;br /&gt;
* Reading code is important - try to make it flow&lt;br /&gt;
** avoid &amp;#039;yoda conditionals&amp;#039; (1 == var) don&amp;#039;t help, modern compilers catch a =/== typo easily&lt;br /&gt;
** if post increment (x++) flows better use that, don&amp;#039;t try to &amp;#039;optimise&amp;#039; away the copy - the compiler will do that for you&lt;br /&gt;
* The compiler is more clever than you could ever possibly hope to be. Write things to be clear and obvious. Only /after/ it&amp;#039;s proven to be a problem to you even look at optimisation (then _always have numbers_)&lt;br /&gt;
* don&amp;#039;t use &amp;#039;c&amp;#039; casts (&amp;quot;(int)x&amp;quot;) - that does different things on if the object type has a defined conversion or not - use static_cast&amp;lt;&amp;gt;/reinterpret_case&amp;lt;&amp;gt; instead&lt;br /&gt;
* prefer {} constructor calls where possible&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	MyClass classInstance{argumentOne, argTwo};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Requires you to avoid implicit conversions - this is good!&lt;br /&gt;
* STL initialiser lists are good&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	std::vector&amp;lt;int&amp;gt; someInts = {1, 2, 3};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* static_assert() any assumptions WRT alignment/packing (when reading structs from files, for example) - or any template restrictions (e.g. if this is only valid on unsigned types, check it!)&lt;br /&gt;
* &amp;lt;limits&amp;gt; is preferred to &amp;#039;c&amp;#039; MAX_INT/whatever&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	auto maxInt = std::numeric_limits&amp;lt;int&amp;gt;::max();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* RAII where possible&lt;br /&gt;
* Early-return is cool, go ahead&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	if (dontHaveToDoAnything)&lt;br /&gt;
	{&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	doLotsOfBoringStuff();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* goto: is useful in some specific cases (e.g. breaking out of nested loops) - but only use it where another keyword won&amp;#039;t do what you want&lt;br /&gt;
** Note limitations WRT goto: over stack initialisers - IE you can&amp;#039;t do it :)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	for (auto &amp;amp;x : containerX)&lt;br /&gt;
	{&lt;br /&gt;
		for (auto &amp;amp;y : x.containerY)&lt;br /&gt;
		{&lt;br /&gt;
			if (weShouldStopAt(y))&lt;br /&gt;
			{&lt;br /&gt;
				goto end;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}			&lt;br /&gt;
end:&lt;br /&gt;
	return;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
* LogInfo/LogWarning/LogError take &amp;#039;printf-style&amp;#039; format string. Make sure everything is the correct type, %d for ints, %u for unsigned, %s for &amp;quot;utf8&amp;quot; const char* &amp;quot;strings&amp;quot; or UString objects directly&lt;br /&gt;
* LogInfo is cheap - use it everywhere interesting&lt;br /&gt;
* LogWarning should be something that has gone wrong, but recoverable.&lt;br /&gt;
* LogError is for fatal errors.&lt;br /&gt;
&lt;br /&gt;
Comments:&lt;br /&gt;
* either // or /***/ is fine - prefer // for single line&lt;br /&gt;
* If doing multi line /\*-style comments have an aligned &amp;#039;\*&amp;#039; with at the beginning of each subseqent line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* first line&lt;br /&gt;
** second line&lt;br /&gt;
** last line**/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Don&amp;#039;t comment for the sake of it&lt;br /&gt;
** Try to make the code clearer first if a comment is &amp;#039;required&amp;#039; to make something obvious&lt;br /&gt;
** Function/variable names are useful here - if reading it aloud describes what your comment was going to say that&amp;#039;s perfect&lt;br /&gt;
** //TODO: //FIXME: when leaving known breakage&lt;br /&gt;
&lt;br /&gt;
== Includes ==&lt;br /&gt;
* &amp;quot;local.h&amp;quot; files first&lt;br /&gt;
* then &amp;lt;system.h&amp;gt; includes&lt;br /&gt;
* Within each of the 2 blocks try to keep them alphabetically sorted (some exceptions may happen, if there&amp;#039;s a system dependency not managed by the system header itself)&lt;br /&gt;
* local headers always relative to the root of OpenApoc - even if in the same directory&lt;br /&gt;
** e.g. &amp;quot;framework/event.h&amp;quot; not &amp;quot;../event.h&amp;quot; or &amp;quot;event.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Headers ==&lt;br /&gt;
* prefer &amp;quot;#pragma once&amp;quot; to &amp;quot;#ifndef __HEADER_NAME&amp;quot; include guards&lt;br /&gt;
* Headers should avoid #include &amp;quot;dependency.h&amp;quot; where possible&lt;br /&gt;
** do forward declaration of classes instead where possible&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class ForwardDeclaredType;&lt;br /&gt;
&lt;br /&gt;
void someFunction(ForwardDeclaredType &amp;amp;param);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** &amp;#039;not possible&amp;#039; includes templates, non-class types, superclasses, try building it without and see what fails&lt;br /&gt;
&lt;br /&gt;
[[Category:OpenApoc]]&lt;/div&gt;</summary>
		<author><name>SupSuper</name></author>
	</entry>
</feed>