On 23.10.2017 22:47, 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());

I doubt this reserves enough space on the stack for the copy.


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.

Reply via email to