On Monday, 23 October 2017 at 20:47:26 UTC, Walter Bright wrote:
On 10/18/2017 1:56 AM, Satoshi wrote:
Unable to publish closed source library without workaround and ugly PIMPL design.


Consider this:

----------- file s.d ------------
  struct S {
    int x;
    this(int x) { this.x = x; }
    int getX() { return x; }
  }
----------- file s.di ------------
  struct S {
    this(int x);
    int getX();
  }
--------------------------

User code:

    import s;
    S s = S(3);
    writeln(s.getX());

Ta dah! Implementation is hidden, no PIMPL. Of course, inlining of the member functions won't work, but it won't work in C++, either, when this technique is used.

I.e. you can use .di/.d files just like you'd use .h/.cpp in C++. The technique works with classes, too.


what about this:

---------- file.d
class Foo {
  private int bar;
  private string text;

  void call() { }
}

----------- file.di

class Foo {
  call();
}



and then I want to inherit from it (I have access to file.di only)
class Bar : Foo { // I cannot due I have misleading information about size of Foo

}

Reply via email to