<div dir="ltr">Oh, presumably to keep the data members out of the header?</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Sep 30, 2013 at 11:42 AM, Reid Kleckner <span dir="ltr"><<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I was thinking along the same lines, but why do you need *Impl classes?</div><div class="HOEnZb"><div class="h5">
<div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Sep 30, 2013 at 6:12 AM, Timur Iskhodzhanov <span dir="ltr"><<a href="mailto:timurrrr@google.com" target="_blank">timurrrr@google.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
AST/MangleContext is becoming increasingly ABI-aware and less "pure"<br>
over time, e.g. now it has notions of VTTs, VFTables, VBTables,<br>
ItaniumThreadLocalWrapper etc.<br>
ABI-specific implementations like ItaniumMangleContext and<br>
MicrosoftMangleContext are privately defined in their own TUs.<br>
<br>
I think it's time to split the MangleContext interface and expose the<br>
ABI-specific methods in public ItaniumMangleContext and<br>
MicrosoftMangleContext interfaces.<br>
<br>
Probably a way to go is to<br>
a) rename old {Itanium,Microsoft}MangleContext to<br>
{Itanium,Microsoft}MangleContextImpl<br>
b) define new {Itanium,Microsoft}MangleContext interfaces in<br>
AST/Mangle.h, inheriting from MangleContext<br>
c) Move the ABI-specific virtual method declarations to the respective<br>
interfaces<br>
d) Inherit {Itanium,Microsoft}MangleContextImpl from<br>
{Itanium,Microsoft}MangleContext<br>
e) Make create{Itanium,Microsoft}MangleContext static methods of<br>
{Itanium,Microsoft}MangleContext.<br>
<br>
Are there any objections or suggestions?<br>
<br>
--<br>
Timur<br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>