Calypso: Direct and full interfacing to C++

Elie Morisse via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Tue May 19 16:36:36 PDT 2015


On Tuesday, 19 May 2015 at 17:44:38 UTC, CraigDillabaugh wrote:
> Just to clarify then.  If gdalwarper.h includes gdal.h and 
> GDALDatasetH is declared in gdal.h, then gdal.h gets imported 
> too?
>
> Craig

On Tuesday, 19 May 2015 at 19:57:45 UTC, Suliman wrote:
> How do you understand which files should be imported?
>
> +1 for question!

modmap is only telling Clang which headers to parse. Then all 
those headers form a big monolithic AST that Calypso split into 
modules following a few rules:

   import (C++) namespace1.testStruct; // imports 
namespace1::testStruct
   import (C++) namespace2.testClass; // imports 
namespace2::testClass
   import (C++) test.anotherClass; // etc. each struct/class/enum 
template or not is placed in a module named after it
   import (C++) test.tempWithPartialSpecs; // imports the primary 
class template + all its partial and explicit specializations
   import (C++) test._; // « _ » is a special module that contains 
all the global variables, global functions and typedefs of a 
namespace (the ones which aren't nested inside a struct or a 
class, or another namespace).

Why the header paths can't be used in imports is explained here:

http://syniurge.blogspot.fr/2013/08/calypso-to-mars-first-contact.html#namingquestion

Documentation is scarce at the moment, the examples (starting 
with showcase.d) try to give a quick overview of how to use 
Calypso but yep we really should write a tutorial of some sort, 
either I or Kelly will do it before DConf.


More information about the Digitalmars-d-announce mailing list