Scope of D packages
cym13 via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Dec 18 16:46:12 PST 2015
On Saturday, 19 December 2015 at 00:09:16 UTC, Basile B. wrote:
> On Friday, 18 December 2015 at 23:20:34 UTC, Jakob Jenkov wrote:
>> I'm coming from Java where "packages" are not that much more
>> than directories. Each class can be exposed or hidden inside a
>> package etc.
>>
>> In Java it is common that an API consists of many packages and
>> subpackages. All classes are simply wrapped up in a JAR (Zip)
>> file, and then they can be used as a library.
>>
>> What is common in D?
>>
>> Does a library have all its classes inside the same package
>> (same directory) ? Or can you have multiple packages /
>> subpackages inside the same library *and* same source root?
>
> each sub directory in a package is also a package
>
> lib/package.d : allow to put all the lib modules as public
> import
> lib/module1.d : this is module 1 from package lib
> lib/module2.d : this is module 2 from package lib
> lib/sub1/package.d : allow to put all the lib.sub1 modules as
> public import
> lib/sub1/module1: this is module 1 from package lib.sub1
> lib/sub1/module2: this is module 2 from package lib.sub1
>
> but when you compile 'lib' library it's a monolithic *.a or
> *.lib file, which still requires the sources.
>
> look at https://github.com/gecko0307/dlib/tree/master/dlib
> structure for example.
To be exact it doesn't need the sources, it needs the function
signatures and type definitions so the equivalent of C header
files. If you don't want to share the full sources with your
library you can generate those header files automatically using
the -H flag in dmd. It will produce a "D interface" file with a
"di" extension.
More information about the Digitalmars-d-learn
mailing list