On Tuesday, 19 May 2015 at 19:57:45 UTC, Suliman wrote:


import (C++) GDALWarpOperation;
import (C++) GDALAccess;
import (C++) GDALWarpOptions;

How do you understand which files should be imported?


These aren't files being imported, they are classes/structs/templates being imported for use. Files are 'modmap'ed not imported in Calypso.

It can be tricky to know which classes/structs/templates need to be imported if you aren't writing a program from scratch AND know the library fairly well. What you can do is run Calypso and if it complains that there is an 'undefined identifier', then check to see if that identifier is a class/struct/template and try to import it to see if the problem is fixed. Not an ideal programming philosophy, of course, but it can help at the beginning to let Calypso do some work for you.

There are also clues in the source code...if you have to 'new' anything then it will need probably to be imported.

GDALWarpOptions* psWarpOptions = GDALCreateWarpOptions();
GDALWarpOptions* is type?
would:
auto psWarpOptions = GDALCreateWarpOptions();
work?


This actually ties in with the question above...and yes, 'auto' will work. 'Auto' is definitely your friend with Calypso, as sometimes it isn't clear what the C++ type would translate into. Now the big thing with 'auto', in this case, is that if you use 'auto' then you don't even need the 'import (C++) GDALWarpOptions'!!!! Calypso will figure it out and do it for you.

This is a bit of a double edge sword though, because sometimes you will really want/need to know the type you are dealing with and what it translates into. Hopefully this doesn't happen too often.

Windows
I hope to be able to test it in nearest time. As I wrote before I have not enough knowlages to build it's by myself, so I will wait bin builds.

If gdalwarper.h includes gdal.h and GDALDatasetH is declared in gdal.h, then gdal.h gets imported too?

+1 for question!


Since everything in the headers on the C++ side is sort of mashed together into the PCH (pre-compiled header) file, and you import every global variable/typedef/function/namespace using the special "_", then you can get access to all of these globals via the one modmap of gdalwarper.h.

Some more well-behaved libraries that have multiple namespaces can be easier to deal with because you can be quite specific with what you want to import, instead of just importing 'EVERYTHING' and then only using a small portion of it.


This is an "As far as I understand it!!!" type of answer designed to be a little less technical. Please see Elie's answers to these questions for a more technical and in depth explanation (and the CORRECT explanation, as I may be somewhat off in my interpretation here :) !! )

Thanks,
Kelly

Reply via email to