On Jul 29, 2009, at 5:05 AM, Kai-Martin Knaak wrote: > On Tue, 28 Jul 2009 21:53:04 -0600, John Doty wrote: > >>> NETLIST to GList and back. >> >> Ugh. >> >> Wrong layer. Massive, unnecessary complexity that only > > A single while loop is no massive complexity.
Hundreds of lines to fix a small part of the problem. Doing it right, in the *common* part of the back end code, can fix the whole problem for much less code. > Anyway, this part of the > patch will go away when the rest of gnetlist gets rid of the > depreacheated NETLIST type in favor of standard GList. > > >> But simply let the back end see all the data, and the whole thing >> becomes easy without limiting flexibility. > > The bug this is all about, resides in the front-end. Where it doesn't belong. That's the real root of these bugs. > (Internal order of > multi-part symbols matters for the output of the front-end). That's one symptom of the bug, yes. But the real problem is that the front end reduces what is logically a list of attributes to a single attribute by arbitrarily picking one. That's wrong. Give them all to the back end. Simpler, cleaner, and no barrier to any back end that might need the whole list. > Fixing it > in the back-ends would be a work-around at best. No, fixing it in the front-end is a workaround. Worse than a workaround, actually, because it takes control away from the back end. > The fix would have to be > applied to each and every affected back-end. No. For your default behavior it needs only to be in the common code in gnetlist.scm. No modification of any back end is necessary if your logic is correct (the usual case). > In addition, the necessity > to catch this ambiguity would be a trap for developers of future > back- > ends. No. That belongs in the common code in gnetlist.scm. It's no burden on future developers. John Doty Noqsi Aerospace, Ltd. http://www.noqsi.com/ [email protected] _______________________________________________ geda-user mailing list [email protected] http://www.seul.org/cgi-bin/mailman/listinfo/geda-user

