<table><tr><td style="">pino requested changes to this revision.<br />pino added a comment.<br />This revision now requires changes to proceed.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D15093">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D15093#324457" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">D15093#324457</a>, <a href="https://phabricator.kde.org/p/andersonbruce/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;">@andersonbruce</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><p>A couple of questions on opening other review requests:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">Should I open a bug request on bugs.kde.org before opening the review?</li>
</ul></div>
</blockquote>

<p>No need to, they are only internal refactorings/improvements.</p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><ul class="remarkup-list">
<li class="remarkup-list-item">Is there any special way I need to mark dependencies? That is, the simpleiplistvalidator is dependent on the updates to the simpleipv4/6 validators and WireGuard is dependent on both.</li>
</ul></blockquote>

<p>I think so: see on the top-right "Edit Related Revisions" -> "Edit Parent/Child Revisions".</p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><ul class="remarkup-list">
<li class="remarkup-list-item">Is there a preferred unit test framework that KDE uses?</li>
</ul></blockquote>

<p>Qt ships its own QtTest -- see <a href="http://doc.qt.io/qt-5/qtest-overview.html" class="remarkup-link" target="_blank" rel="noreferrer">http://doc.qt.io/qt-5/qtest-overview.html</a></p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><p>And do you possibly have a pointer to a sample of other projects that use it?</p></blockquote>

<p>One simple example is in juk, see the <tt style="background: #ebebeb; font-size: 13px;">tests</tt> subdirectory.</p></div></div><br /><div><strong>INLINE COMMENTS</strong><div><div style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83109">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleiplistvalidator.cpp:27-28</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span class="n">SimpleIpListValidator</span><span style="color: #aa2211">::</span><span class="n">SimpleIpListValidator</span><span class="p">(</span><span class="n">QObject</span> <span style="color: #aa2211">*</span><span class="n">parent</span><span class="p">,</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                                                       <span style="color: #aa4000">enum</span> <span class="n">AddressStyle</span> <span class="n">style</span><span class="p">,</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                                                       <span style="color: #aa4000">enum</span> <span class="n">AddressType</span> <span class="n">type</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa2211">:</span> <span class="n">QValidator</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">this is not C, so 'enum' is not needed</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83111">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleiplistvalidator.cpp:31-34</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">addressStyle</span> <span style="color: #aa2211">=</span> <span class="n">style</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">addressType</span> <span style="color: #aa2211">=</span> <span class="n">type</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">ipv4Validator</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">nullptr</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">ipv6Validator</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">nullptr</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">these can be moved to the constructor initialization list, so it's slightly more efficient</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83113">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleiplistvalidator.cpp:42</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">ipv4Style</span> <span style="color: #aa2211">=</span> <span class="n">SimpleIpV4AddressValidator</span><span style="color: #aa2211">::</span><span class="n">AddressStyle</span><span style="color: #aa2211">::</span><span class="n">WithCidr</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">ipv4Validator</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">SimpleIpV4AddressValidator</span><span class="p">(</span><span style="color: #aa4000">nullptr</span><span class="p">,</span> <span class="n">ipv4Style</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="p">}</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">this is leaked -- either you pass 'this' as parent, or explicitly delete them in the class destructor</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83114">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleiplistvalidator.cpp:50</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">ipv6Style</span> <span style="color: #aa2211">=</span> <span class="n">SimpleIpV6AddressValidator</span><span style="color: #aa2211">::</span><span class="n">AddressStyle</span><span style="color: #aa2211">::</span><span class="n">WithCidr</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">ipv6Validator</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">SimpleIpV6AddressValidator</span><span class="p">(</span><span style="color: #aa4000">nullptr</span><span class="p">,</span> <span class="n">ipv6Style</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="p">}</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">ditto</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83115">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleiplistvalidator.cpp:61</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #74777d">// Split the incoming address on commas possibly with spaces on either side</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">QStringList</span> <span class="n">addressList</span> <span style="color: #aa2211">=</span> <span class="n">address</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">QRegExp</span><span class="p">(</span><span style="color: #766510">"</span><span style="color: #bb6622">\\</span><span style="color: #766510">s*,</span><span style="color: #bb6622">\\</span><span style="color: #766510">s*"</span><span class="p">));</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">a regexp is not needed here, just pass QString::SkipEmptyParts to split()</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83116">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleiplistvalidator.cpp:67-68</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">int</span> <span class="n">i</span> <span style="color: #aa2211">=</span> <span style="color: #601200">0</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">State</span> <span class="n">ipv4Result</span> <span style="color: #aa2211">=</span> <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">Acceptable</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">State</span> <span class="n">ipv6Result</span> <span style="color: #aa2211">=</span> <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">Acceptable</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">State</span> <span class="n">result</span> <span style="color: #aa2211">=</span> <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">Acceptable</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">these can be moved inside the foreach loop</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83118">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleiplistvalidator.cpp:78</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">ipv4Validator</span> <span style="color: #aa2211">!=</span> <span style="color: #aa4000">nullptr</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">ipv4Result</span> <span style="color: #aa2211">=</span> <span class="n">ipv4Validator</span><span style="color: #aa2211">-></span><span class="n">validate</span><span class="p">(</span><span style="color: #aa4000">const_cast</span><span style="color: #aa2211"><</span><span class="n">QString</span><span style="color: #aa2211">&></span><span class="p">(</span><span class="n">addr</span><span class="p">),</span> <span class="n">localPos</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">else</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">this const_cast is not nice... rather keep a local copy of the string</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83119">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleiplistvalidator.cpp:85</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">ipv6Validator</span> <span style="color: #aa2211">!=</span> <span style="color: #aa4000">nullptr</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">ipv6Result</span> <span style="color: #aa2211">=</span> <span class="n">ipv6Validator</span><span style="color: #aa2211">-></span><span class="n">validate</span><span class="p">(</span><span style="color: #aa4000">const_cast</span><span style="color: #aa2211"><</span><span class="n">QString</span><span style="color: #aa2211">&></span><span class="p">(</span><span class="n">addr</span><span class="p">),</span> <span class="n">localPos</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">else</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">ditto</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83120">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleiplistvalidator.cpp:91-92</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">ipv6Result</span> <span style="color: #aa2211">==</span> <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">Invalid</span> <span style="color: #aa2211">&&</span> <span class="n">ipv4Result</span> <span style="color: #aa2211">==</span> <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">Invalid</span><span class="p">)</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">result</span> <span style="color: #aa2211">=</span> <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">Invalid</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span style="color: #aa4000">break</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="p">}</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">i think you can just <tt style="background: #ebebeb; font-size: 13px;">return QValidator::Invalid</tt> straight away</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83110">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleiplistvalidator.h:42-45</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);"><span style="color: #74777d">    <span class="bright"> */</span></span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="bright"></span><span class="n"><span class="bright">QValidator</span></span><span class="bright"></span><span style="color: #aa2211"><span class="bright">::</span></span><span class="bright"></span><span class="n"><span class="bright">State</span></span><span class="bright"> </span><span class="n"><span class="bright">checkWithInputMask</span></span><span class="bright"></span><span class="p"><span class="bright">(</span></span><span class="bright"></span><span class="n"><span class="bright">QString</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">&</span></span><span class="bright"></span><span class="p"><span class="bright">,</span></span><span class="bright"> </span><span style="color: #aa4000"><span class="bright">int</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">&</span></span><span class="bright"></span><span class="p"><span class="bright">)</span></span><span class="bright"> </span><span style="color: #aa4000"><span class="bright">const</span></span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="bright"></span><span style="color: #74777d"><span class="bright">/** Function split intput string into tetrads and check them for v</span>alid<span class="bright"> values.</span></span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);"><span style="color: #74777d">    <span class="bright"> *  In the tetrads are placed into QList. Input string may be changed.</span></span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);"><span style="color: #74777d">     */</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">State</span> <span class="n">checkTetradsRanges</span><span class="p">(</span><span class="n">QString</span> <span style="color: #aa2211">&</span><span class="p">,</span> <span class="n">QList</span><span style="color: #aa2211"><</span><span style="color: #aa4000">int</span><span style="color: #aa2211">>&</span><span class="p">)</span> <span style="color: #aa4000">const</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="bright"></span><span class="n"><span class="bright">AddressStyle</span></span><span class="bright"> </span><span class="n"><span class="bright">addressStyle</span></span><span class="bright"></span><span class="p"><span class="bright">;</span></span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="bright"></span><span class="n"><span class="bright">AddressType</span></span><span class="bright"> </span><span class="n"><span class="bright">addressType</span></span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="bright"></span><span class="n"><span class="bright">SimpleIpV6AddressValidator</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">*</span></span><span class="bright"></span><span class="n"><span class="bright">ipv6V</span>alid<span class="bright">ator</span></span><span class="bright"></span><span class="p"><span class="bright">;</span></span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="bright"></span><span class="n"><span class="bright">SimpleIpV4AddressValidator</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">*</span></span><span class="bright"></span><span class="n"><span class="bright">ipv4Validator</span></span><span class="bright"></span><span class="p"><span class="bright">;</span></span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">private class variables start with "m_" prefix</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83122">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleipv4addressvalidator.cpp:26</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);"><span class="n">SimpleIpV4AddressValidator</span><span style="color: #aa2211">::</span><span class="n">SimpleIpV4AddressValidator</span><span class="p">(</span><span class="n">QObject</span> <span style="color: #aa2211">*</span><span class="n">parent</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span class="n">SimpleIpV4AddressValidator</span><span style="color: #aa2211">::</span><span class="n">SimpleIpV4AddressValidator</span><span class="p">(</span><span class="n">QObject</span> <span style="color: #aa2211">*</span><span class="n">parent<span class="bright"></span></span><span class="bright"></span><span class="p"><span class="bright">,</span></span><span class="bright"> </span><span style="color: #aa4000"><span class="bright">enum</span></span><span class="bright"> </span><span class="n"><span class="bright">AddressStyle</span></span><span class="bright"> </span><span class="n"><span class="bright">style</span></span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; ">    <span style="color: #aa2211">:</span> <span class="n">QValidator</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">as above, no "enum"</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83123">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleipv4addressvalidator.cpp:29</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; "><span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">addressStyle</span> <span style="color: #aa2211">=</span> <span class="n">style</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; "><span class="p">}</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">in constructor initialization list</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83124">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleipv4addressvalidator.cpp:55-66</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">v</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">QRegExpValidator</span><span class="p">(</span><span class="n">QRegExp</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span style="color: #766510">"[0-9, ]{1,3}</span><span style="color: #bb6622">\\</span><span style="color: #766510">.[0-9, ]{1,3}</span><span style="color: #bb6622">\\</span><span style="color: #766510">.[0-9, ]{1,3}</span><span style="color: #bb6622">\\</span><span style="color: #766510">.[0-9, ]{1,3}"</span><span class="p">)),</span> <span style="color: #601200">0</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">break</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">case</span> <span style="color: #a0a000">WithCidr</span><span class="p">:</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">v</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">QRegExpValidator</span><span class="p">(</span><span class="n">QRegExp</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span style="color: #766510">"([0-9, ]{1,3}</span><span style="color: #bb6622">\\</span><span style="color: #766510">.){3,3}[0-9, ]{1,3}/[0-9]{1,2}"</span><span class="p">)),</span> <span style="color: #601200">0</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">break</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">all the regexps and their validators are created every time, and this is going to be super slow; since the type is decided at constructor time and never changed, just create the validator once</p>

<p style="padding: 0; margin: 8px;">(alos, this code leaks all the validators)</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83125">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleipv4addressvalidator.cpp:120</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">    <span style="color: #74777d">// replace input string with the corrected version</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">unneeded empty line change</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83126">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleipv4addressvalidator.cpp:137</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                <span class="p">}</span> <span style="color: #aa4000">else</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                    <span class="n">value</span> <span style="color: #aa2211">+=</span> <span class="n">QString</span><span style="color: #aa2211">::</span><span class="n">number</span><span class="p">(</span><span class="n">cidrValue</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                    <span style="color: #aa4000">return</span> <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">Acceptable</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">there is already <tt style="background: #ebebeb; font-size: 13px;">cidrParts[1]</tt> as string, so no need to create it again from the value</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83127">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleipv4addressvalidator.cpp:148</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                <span class="p">}</span> <span style="color: #aa4000">else</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                    <span class="n">value</span> <span style="color: #aa2211">+=</span> <span class="n">QString</span><span style="color: #aa2211">::</span><span class="n">number</span><span class="p">(</span><span class="n">portValue</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                    <span style="color: #aa4000">return</span> <span class="n">QValidator</span><span style="color: #aa2211">::</span><span class="n">Acceptable</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">ditto</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83121">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleipv4addressvalidator.h:44</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #a0a000">private</span><span class="p">:</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">AddressStyle</span> <span class="n">addressStyle</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; "><span class="p">};</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">"m_" prefix</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83129">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleipv6addressvalidator.cpp:26</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);"><span class="n">SimpleIpV6AddressValidator</span><span style="color: #aa2211">::</span><span class="n">SimpleIpV6AddressValidator</span><span class="p">(</span><span class="n">QObject</span> <span style="color: #aa2211">*</span><span class="n">parent</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span class="n">SimpleIpV6AddressValidator</span><span style="color: #aa2211">::</span><span class="n">SimpleIpV6AddressValidator</span><span class="p">(</span><span class="n">QObject</span> <span style="color: #aa2211">*</span><span class="n">parent<span class="bright"></span></span><span class="bright"></span><span class="p"><span class="bright">,</span></span><span class="bright"> </span><span style="color: #aa4000"><span class="bright">enum</span></span><span class="bright"> </span><span class="n"><span class="bright">AddressStyle</span></span><span class="bright"> </span><span class="n"><span class="bright">style</span></span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; ">    <span style="color: #aa2211">:</span> <span class="n">QValidator</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">no need for "enum"</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83130">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleipv6addressvalidator.cpp:29</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; "><span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">addressStyle</span> <span style="color: #aa2211">=</span> <span class="n">style</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; "><span class="p">}</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">in constructor initialization list</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83131">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleipv6addressvalidator.cpp:50-57</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">case</span> <span style="color: #a0a000">Base</span><span class="p">:</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">v</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">QRegExpValidator</span><span class="p">(</span><span class="n">QRegExp</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span style="color: #766510">"([0-9a-fA-F]{1,4}|:)+"</span><span class="p">)),</span> <span style="color: #aa4000">nullptr</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">break</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">case</span> <span style="color: #a0a000">WithCidr</span><span class="p">:</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">v</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">QRegExpValidator</span><span class="p">(</span><span class="n">QRegExp</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span style="color: #766510">"([0-9a-fA-F]{1,4}|:)+/[0-9]{1,3}"</span><span class="p">)),</span> <span style="color: #aa4000">nullptr</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">break</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">as above, created every time, and leaked</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-83128">View Inline</a><span style="color: #4b4d51; font-weight: bold;">simpleipv6addressvalidator.h:44</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #a0a000">private</span><span class="p">:</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">AddressStyle</span> <span class="n">addressStyle</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; "><span class="p">};</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">"m_" prefix</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R116 Plasma Network Management Applet</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D15093">https://phabricator.kde.org/D15093</a></div></div><br /><div><strong>To: </strong>andersonbruce, Plasma, jgrulich, pino<br /><strong>Cc: </strong>acrouthamel, K900, pino, lbeltrame, ngraham, plasma-devel, ragreen, Pitel, ZrenBot, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart<br /></div>