Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Rui Maciel <rui.maciel@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: What about namespaces ? |
| Date | 2012-04-03 21:05 +0100 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <jlfl67$16g$1@speranza.aioe.org> (permalink) |
| References | <jleflk$kv0$1@speranza.aioe.org> <d104332cfa1f2f991141df6b20577e61@msgid.frell.theremailer.net> |
Fritz Wuehler wrote:
> Rui Maciel <rui.maciel@gmail.com> wrote:
>
>> When a C program grows, the odds that two identifier names will clash
>> will
>> increase. So, unless the programmer has in place an effective policy to
>> name every identifier that is able to avoid any naming clash, including
>> thosed introduced by third-party code, the odds that this problem will
>> manifest itself will also become greater.
>
> There is probably no solution to this given the gigantic amount of C
> library code that already exists and the unbelievable lack of discipline
> and "don't tell me what to do" typical of C programmers as well as the
> huge number of C programmers. The linker will probably also have to be
> changed to support the weird names, but I am not sure.
Basically, the only changes which would be required to implement this
feature is how the front-end of a compiler handles identifiers. Let's
consider that all a namespace implementation would do is provide a
programmer with a way to define regions of code where:
- a specific prefix was omitted from declarations and definitions
- prefixes could be left implied in identifiers
With this in mind, consider the following function definition:
<code>
int package_version_do_stuff()
{
return 42;
}
</code>
The previous function definition could be considered equivalent to the
following code:
<code>
namespace package
{
namespace version
{
int do_stuff();
{
return 42;
}
}
}
</code>
Then, whenever any identifier was referenced, the compiler would only need
to check the identifier list to search for any identifier which matched the
identifier string, or any version which included a prefix which has been set
with a "using namespace" directive.
The best part about this way of implementing namespaces in C is that it
would open the door to polymorphism, similar to the one implemented through
the _Generic() keyword in C11. Consider the following example:
<code>
namespace foo
{
namespace int_version
{
void do_stuff(int param)
{
puts("int parameter");
}
}
namespace float_version
{
void do_stuff(float param)
{
puts("float parameter");
}
}
}
int main(void)
{
using namespace foo::int_version, foo_float_version;
do_stuff(1); // this would call foo_int_version_do_stuff(1);
do_stuff(1.0f); // this would call foo_float_version_do_stuff(1);
return 0;
}
</code>
Rui Maciel
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
What about namespaces ? Rui Maciel <rui.maciel@gmail.com> - 2012-04-03 10:25 +0100
Re: What about namespaces ? "BartC" <bc@freeuk.com> - 2012-04-03 11:20 +0100
Re: What about namespaces ? Ian Collins <ian-news@hotmail.com> - 2012-04-03 22:29 +1200
Re: What about namespaces ? "BartC" <bc@freeuk.com> - 2012-04-03 12:38 +0100
Re: What about namespaces ? Keith Thompson <kst-u@mib.org> - 2012-04-03 12:19 -0700
Re: What about namespaces ? "BartC" <bc@freeuk.com> - 2012-04-03 20:57 +0100
Re: What about namespaces ? gordonb.9sh3w@burditt.org (Gordon Burditt) - 2012-04-03 06:23 -0500
Re: What about namespaces ? Rui Maciel <rui.maciel@gmail.com> - 2012-04-03 19:54 +0100
Re: What about namespaces ? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-04-03 12:18 -0700
Re: What about namespaces ? jgharston <jgh@arcade.demon.co.uk> - 2012-04-03 13:09 -0700
Re: What about namespaces ? Rui Maciel <rui.maciel@gmail.com> - 2012-04-03 19:54 +0100
Re: What about namespaces ? Rui Maciel <rui.maciel@gmail.com> - 2012-04-03 19:54 +0100
Re: What about namespaces ? 88888 Dihedral <dihedral88888@googlemail.com> - 2012-04-03 06:49 -0700
Re: What about namespaces ? Robert Wessel <robertwessel2@yahoo.com> - 2012-04-03 11:10 -0500
Re: What about namespaces ? Rui Maciel <rui.maciel@gmail.com> - 2012-04-03 20:12 +0100
Re: What about namespaces ? Ian Collins <ian-news@hotmail.com> - 2012-04-04 07:20 +1200
Re: What about namespaces ? Fritz Wuehler <fritz@spamexpire-201204.rodent.frell.theremailer.net> - 2012-04-03 20:58 +0200
Re: What about namespaces ? Rui Maciel <rui.maciel@gmail.com> - 2012-04-03 21:05 +0100
Re: What about namespaces ? "BartC" <bc@freeuk.com> - 2012-04-03 21:33 +0100
Re: What about namespaces ? William Ahern <william@wilbur.25thandClement.com> - 2012-04-03 12:05 -0700
Re: What about namespaces ? James Kuyper <jameskuyper@verizon.net> - 2012-04-03 15:50 -0400
Re: What about namespaces ? Rui Maciel <rui.maciel@gmail.com> - 2012-04-03 21:27 +0100
Re: What about namespaces ? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-04-03 14:40 -0700
Re: What about namespaces ? jgk@panix.com (Joe keane) - 2012-04-11 20:56 +0000
Re: What about namespaces ? Ben Pfaff <blp@cs.stanford.edu> - 2012-04-11 14:46 -0700
Re: What about namespaces ? jgk@panix.com (Joe keane) - 2012-04-11 23:03 +0000
Re: What about namespaces ? jgk@panix.com (Joe keane) - 2012-04-13 00:40 +0000
Re: What about namespaces ? Keith Thompson <kst-u@mib.org> - 2012-04-12 18:56 -0700
Re: What about namespaces ? "BartC" <bc@freeuk.com> - 2012-04-13 13:20 +0100
Re: What about namespaces ? Keith Thompson <kst-u@mib.org> - 2012-04-13 13:43 -0700
Re: What about namespaces ? jgk@panix.com (Joe keane) - 2012-04-15 16:46 +0000
Re: What about namespaces ? Martin Ambuhl <mambuhl@earthlink.net> - 2012-04-21 04:38 -0400
Re: What about namespaces ? "BartC" <bc@freeuk.com> - 2012-04-21 16:44 +0100
Re: What about namespaces ? "BartC" <bc@freeuk.com> - 2012-04-11 23:01 +0100
Re: What about namespaces ? jgk@panix.com (Joe keane) - 2012-04-13 21:04 +0000
Re: What about namespaces ? lawrence.jones@siemens.com - 2012-04-11 22:09 -0400
Re: What about namespaces ? Nomen Nescio <nobody@dizum.com> - 2012-04-12 10:55 +0200
Re: What about namespaces ? Rui Maciel <rui.maciel@gmail.com> - 2012-04-04 00:17 +0100
Re: What about namespaces ? William Ahern <william@wilbur.25thandClement.com> - 2012-04-03 16:44 -0700
Re: What about namespaces ? nick_keighley_nospam@hotmail.com - 2012-04-04 00:49 -0700
Re: What about namespaces ? Ian Collins <ian-news@hotmail.com> - 2012-04-04 14:54 +1200
Re: What about namespaces ? Ian Collins <ian-news@hotmail.com> - 2012-04-04 15:43 +1200
Re: What about namespaces ? Ian Collins <ian-news@hotmail.com> - 2012-04-04 16:06 +1200
Re: What about namespaces ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-04-04 04:37 +0100
Re: What about namespaces ? Kaz Kylheku <kaz@kylheku.com> - 2012-04-04 18:43 +0000
Re: What about namespaces ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-04-05 01:43 +0100
Re: What about namespaces ? "io_x" <a@b.c.invalid> - 2012-04-04 09:32 +0200
Re: What about namespaces ? Tim Rentsch <txr@alumni.caltech.edu> - 2012-04-05 11:22 -0700
Re: What about namespaces ? Rui Maciel <rui.maciel@gmail.com> - 2012-04-05 21:04 +0100
Re: What about namespaces ? Kaz Kylheku <kaz@kylheku.com> - 2012-04-06 01:10 +0000
csiph-web