Thread overview
[Issue 2785] New: Interfaces should be able to require non-member functions
Apr 02, 2009
d-bugmail
Apr 02, 2009
d-bugmail
Apr 02, 2009
d-bugmail
Apr 02, 2009
d-bugmail
Apr 04, 2009
d-bugmail
April 02, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2785

           Summary: Interfaces should be able to require non-member
                    functions
           Product: D
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla@digitalmars.com
        ReportedBy: andrei@metalanguage.com


This should work:

interface Foo
{
    extern void bar(int, Foo, double);
}

meaning that a non-member function bar should exist that accepts an int, the implementor of Foo, and a double.


-- 

April 02, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2785





------- Comment #1 from jarrett.billingsley@gmail.com  2009-04-02 13:18 -------
I agree with the suggestion, but why not 'static'?


-- 

April 02, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2785





------- Comment #2 from andrei@metalanguage.com  2009-04-02 13:31 -------
(In reply to comment #1)
> I agree with the suggestion, but why not 'static'?
> 

static still implies member function.


-- 

April 02, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2785





------- Comment #3 from jarrett.billingsley@gmail.com  2009-04-02 13:49 -------
OK, then maybe I'm not understanding what you're proposing.  When I see "member function" I think "a function meant to be called on an instance of a class" as opposed to on the class itself.  (I'd love to see 'abstract static' methods, which is what I thought this was proposing.)

Are you saying that when a class implements Foo, there must be a function void bar(int, Foo, double) accessible from that scope?  What horrid things are you planning on doing with that?  ;)


-- 

April 04, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2785





------- Comment #4 from sandford@jhu.edu  2009-04-03 23:54 -------
(In reply to comment #0)
I like the concept of extern functions in this concept, though it does rise
questions of what scopes/modules are used for match searching. However, the use
of Foo to mean the class name seems like the wrong keyword. What if I truly
wanted a function that took a Foo? Also, it makes these function definitions
behave differently than definitions outside the interface. Perhaps 'super' or
'typeof(this)'?


-- 

August 27, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2785


Andrei Alexandrescu <andrei@metalanguage.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID




--- Comment #5 from Andrei Alexandrescu <andrei@metalanguage.com>  2009-08-27 14:29:08 PDT ---
I'm dropping this because introspection seems to be a better path to achieving such requirements.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------