Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
September 15, 2005 how to hide sources? | ||||
---|---|---|---|---|
| ||||
Hello! Help me, pls. I don't understand how I can distribute my libs w/o sources? When I produce .OBJ files and try to link them to main program DMD wants access to original *.D files! |
September 15, 2005 Re: how to hide sources? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Wakie | On Thu, 15 Sep 2005 10:05:09 +0000 (UTC), Wakie wrote: > Hello! Help me, pls. I don't understand how I can distribute my libs w/o > sources? > When I produce .OBJ files and try to link them to main program DMD wants access > to original *.D files! For each module in the library you need to create a 'header' module. This is identical to the original module source code, except that it only contains public IDENTIFIERS and no executable code. You then distribute your library and the header modules. For example, if you have a module file called foo_m.d, like this ... <code> module foo_m; private { import std.string; int myValue; } class Foo { private { int _x; long _y; } this() { _x = 1; _y = 1; } char[] toString() { return std.string.format("[%d:%d]", _x, _y); } int x() {return _x + myValue;} long y() {return _y + myValue;} } </code> You would create a header file, ALSO called foo_m.d but obviously in a different folder, like this ... <code> module foo_m; class Foo { this(); char[] toString(); int x(); long y(); } </code> You would create the library and distribute the library file AND the cut-down 'header' source file. -- Derek Parnell Melbourne, Australia 15/09/2005 8:09:48 PM |
September 15, 2005 Re: how to hide sources? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Derek Parnell |
>For each module in the library you need to create a 'header' module.
OK, Derek, thank you very much for excellent answer! I tried, it works. :) What you think about to add some tool which will do this automatically? (like h->.d)
And second question: I found a lot of docs for D, but still not sure I have FULL description of the language. For example I frequently see things like "private import". I know directive "import" but never met explanation for "private import". Where I can found full spec for D?
|
September 15, 2005 Re: how to hide sources? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Newbie | private means private same as it does as a class attribute
you can:
private
{
import something;
}
or
private import something;
it means import it into the current module only, then other modules that import this module wont also import somethig
Newbie wrote:
>>For each module in the library you need to create a 'header' module.
>
>
> OK, Derek, thank you very much for excellent answer! I tried, it works. :)
> What you think about to add some tool which will do this automatically? (like
> h->.d)
>
> And second question: I found a lot of docs for D, but still not sure I have FULL
> description of the language. For example I frequently see things like "private
> import". I know directive "import" but never met explanation for "private
> import". Where I can found full spec for D?
>
>
|
September 15, 2005 Re: how to hide sources? | ||||
---|---|---|---|---|
| ||||
Posted in reply to J Thomas | >it means import it into the current module only, then other modules that import this module wont also import somethig
Strange behaviour, but it goes as you say. :) Thanks.
|
September 16, 2005 Re: how to hide sources? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Wakie | Wakie wrote: > Hello! Help me, pls. I don't understand how I can distribute my libs w/o > sources? > When I produce .OBJ files and try to link them to main program DMD wants access > to original *.D files! Try digc: http://www.smocky.com/index.php/Digc It helps with creating library files and it appends a stripped source to the end of the library so that you only need to distribute one file. During compilation of other programs, if it detects that the library is used (through an import) it recreates the headers and links in what's needed. |
Copyright © 1999-2021 by the D Language Foundation