This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: RFC: attaching functions to types
- From: Andrew Pinski <pinskia at gmail dot com>
- To: Shawn Landden <shawnlandden at gmail dot com>
- Cc: GCC Mailing List <gcc at gcc dot gnu dot org>
- Date: Mon, 23 Mar 2015 11:39:53 -0700
- Subject: Re: RFC: attaching functions to types
- Authentication-results: sourceware.org; auth=none
- References: <CAJusiZX-_OMfy+cD6LSQOUOK7R4u-_8LQEaFVia2DAb9NOw9mA at mail dot gmail dot com> <CA+=Sn1nEegnMOiNE9qZRGEt-i=Chq8hu6pWNU_Y6i47m=vVd+A at mail dot gmail dot com> <CAJusiZV9fRCA-sdwEd=qqVV6aQqNzSTqXwte15QBkgeyEidLrA at mail dot gmail dot com>
On Mon, Mar 23, 2015 at 11:32 AM, Shawn Landden <shawnlandden@gmail.com> wrote:
> On Fri, Mar 20, 2015 at 6:36 PM, Andrew Pinski <pinskia@gmail.com> wrote:
>> On Fri, Mar 20, 2015 at 6:05 PM, Shawn Landden <shawnlandden@gmail.com> wrote:
>>> direct-declarator:
>>> ( type-qualifier[opt] type-specifier *[opt] identifier[opt] ) .
>>> function-definition
>>>
>>>
>>> call like so:
>>>
>>>
>>> type.foo(baz);
>>> typep->foo(baz);
>>
>>
>> Wait you are re-inventing C with classes and C++.
> This is still C, unlike C++. I was influenced by Go.
Have you read about C with classes and the history around C++? C with
classes was still a super-set of C in the first couple of years, only
later becoming C++ when it started to become a language in its own
rights. Again what is the difference between your ideas and C with
classes?
Thanks,
Andrew
>>
>> Thanks,
>> Andrew
>>
>>>
>>> type automatically becomes first parameter, (when used as a function
>>> pointer) and as a pointer to if that was included in definition. if
>>> type is a typedef of void and not a pointer then parameters are passed
>>> the same.
>>>
>>>
>>> This would be implemented with function name mangling:
>>>
>>>
>>> __tf_type_identifier(...)
>>>
>>>
>>> example:
>>>
>>>
>>> struct foo {
>>> int a
>>> }
>>>
>>> int (struct foo *b).add(int f) {
>>> return b->a + f;
>>> }
>>>
>>> int main(void) {
>>>
>>> struct foo bar;
>>>
>>>
>>> baz.a = 4;
>>>
>>> return baz.add(6);
>>>
>>> }
>>>
>>>
>>> I have been hacking at the source, but it is far from functional.
>>> --
>>> Liberty equality fraternity or death,
>>>
>>> Shawn Landden
>>> ChurchOfGit.com
>
>
>
> --
> Liberty equality fraternity or death,
>
> Shawn Landden
> ChurchOfGit.com