|
![](/i/fill.gif) |
"nemesis" <nam### [at] gmail com> wrote:
> "Randall Sawyer" <sra### [at] yahoo com> wrote:
> > But, I've just been getting
> > them out there so that we can all find the one made of tungsten.
>
> That's the whole point of this thread. And indeed perhaps none of them is
> actually made of tungsten, but if we mix them in an alchemists way, we may
> eventually get gold. :)
>
> > some of those includes might call still more - "third
> > level" - and so on. That's where you might run into a naming issue. Who
> > wants to have to read all those other files?
>
> No one wants naming conflicts: they are bad, very bad. That's why i
> proposed having included items being local to the file including them. And
> it really doesn't seem much difficult to make the parser handle it that way
> and aliases.
>
> > I realize that the #ifndef() at the front of each include may interfere with
> > this strategy. (User includes "A.inc" and "B.inc" and "A.inc" includes
> > "B.inc".
>
> I believe such metaprogramming #ifdefs and whatnot should be in charge of
> the parser, not the user. If includes are local, there should be no need
> for them.
If you want the #declare of a sub-include to have local-status of a
current-level include, then that seems like it'd work just as long as the
#declare was meant to be used at a one-up level (one-up from the
sub-include). I've got a lot of stuff which I think this system would
break. It's seems hard to come up with a system that won't break
something.
How about different namespaces plain & simple, but with two additions: The
ability to define a global namespace, and the ability to combine
namespaces. If multiple namespaces are activated at once via a command
#namespace(Jake,Sam) the parser should automatically give an error if there
are conflicts. New #declares that are created when multiple non-global
namespaces are active will remain accessible to the individual namespaces.
#namespace (global) //brings scope up to global namespace only (default)
#include "colors.inc"
#namespace (Jake) //namespace Jake is defined and activated.
//global namespace is still accessible and therefore had better not conflict
with Jake.
#include "jakes_objects.inc"
#namespace (global) //brings scope up to global namespace only
#ifdef(jakes_doorknob)
#debug "huh? jakes_doorknob shouldn't be accessible now."
#end
#namespace (Jake) //switch back to jake's namespace as remembered by parser
#object{ jakes_doorknob pigment{White} }
Post a reply to this message
|
![](/i/fill.gif) |