Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror

Comment Re:No one cares about D (Score 3, Informative) 404

I can't think of something with significant market share, but there is now an indie game on Steam written in D: Mayhem Intergalactic

Additionally, D is link-compatible with C. Using C libraries from D is as easy as porting the header files to D. There are a couple of tools for (mostly) automating this process, and quite a lot of the major C libraries have D bindings available.

Comment Re:Python and D (Score 1) 570

There's no way that I can see to do this automatically.

The concern is this (reposted here so people don't have to dig through Pyd's docs):

class Foo {
    void bar() { writefln("Foo.bar"); }
}

void func(Foo f) { f.bar(); }

When we wrap this class and this function with Pyd (or Boost.Python), we can subclass Foo with a Python class:

class PyClass(Foo):
    def bar(self):
        print "PyClass.bar"

The behavior we want is:

>>> o = PyClass()
>>> func(o)
PyClass.bar

However, there's no way to get the D function to polymorphically call the Python subclass's method without user intervention. I cannot generate the required wrapper with templates alone. Therefore, users must write thin wrapper classes in D, and expose the wrappers to Python:

class FooWrap : Foo {
    mixin OverloadShim;
    void bar() {
        get_overload(&super.bar, "bar");
    }
}

get_overload performs a bit of magic, checking if the current object is an actual instance of FooWrap or a Python subclass, and calling the proper method as appropriate.

In the dim and distant future, I may be able to generate code like this in a SWIG-like fashion. D is remarkably easy to parse (perhaps one of the language's strongest advantages over C++), and I have almost completed a D parser written in Python (using Pyparsing). Since Pyd's build utility is written in Python, doing this kind of trickery shouldn't prove too difficult.

Slashdot Top Deals

"It's what you learn after you know it all that counts." -- John Wooden

Working...