<br><br><div class="gmail_quote">On 9 February 2011 13:40, Joerg Sonnenberger <span dir="ltr"><<a href="mailto:joerg@britannica.bec.de">joerg@britannica.bec.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im">On Wed, Feb 09, 2011 at 01:29:23PM -0800, Nick Lewycky wrote:<br>
> On 9 February 2011 12:28, Joerg Sonnenberger <<a href="mailto:joerg@britannica.bec.de">joerg@britannica.bec.de</a>>wrote:<br>
><br>
> > Hi all,<br>
> > attached patch is the initial support for .pushsection / .popsection.<br>
> > To do this properly requires a change in the MCStreamer API. One<br>
> > approach is attached. I think a better idea would be to split the<br>
> > current SwitchSection() into two parts: the common code to manage<br>
> > CurSection / PrevSection and a virtual function ChangeSection that gets<br>
> > called if the new CurSection differs from the old one. There are a bunch<br>
> > of bugs with the handling of changing to the current section again.<br>
> ><br>
><br>
> Why does this need a second SwitchSection method and why does it need to<br>
> take the previous as an argument? Why not just take the current one, then<br>
> switch to the new one?<br>
<br>
</div>Because .popstack changes both the current and last section. More<br>
importantly, it can set the previous section to NULL, so it can't just<br>
be emulated with two calls to SwitchSection.<br></blockquote><div><br></div><div>Right, I realize that it can't, but the MCStreamer API is supposed to mirror the set of directives actually supported. SwitchSection maps to ".section" but SwitchSection2 doesn't as there's no directive which set the current and previous section to any strings you want. The MCStreamer implementations can just modify CurSection and PrevSection directly, they don't need an API for it.</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Splitting the current SwitchSection would be cleaner and fix some issues<br>
as I mentioned.<br></blockquote><div><br></div><div>Sure, feel free to refactor but please make them protected methods. Currently CurSection and PrevSection are protected. I'd suggest replacing those with the stacks and then get{Current,Previous}Section return the top of the stack.</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">> Also, did you check that a .s which consists entirely of ".previous" gives a<br>
> nice error? GAS says:<br>
> x.s:1: Warning: .previous without corresponding .section; ignored<br>
<br>
</div>I haven't touched .previous and don't plan to do it for this patch.<br>
It is an unrelated issue.<br></blockquote><div><br></div><div>Good point!</div><div><br></div><div>Nick</div><div><br></div></div>