Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #19301

Re: What about namespaces ?

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>

Show all headers | View raw


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


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