From 134a74e818c37e9775f33fcd8dd24e527d634b0f Mon Sep 17 00:00:00 2001 From: jay <jlaura@usgs.gov> Date: Wed, 8 Aug 2018 14:39:25 -0700 Subject: [PATCH] Adds dynamic casting to RasterGM --- csmapi.i | 3 ++- geometricmodel.i | 7 +++++++ plugin.i | 23 ++++++++++++++++++++--- rastergm.i | 4 +++- tests/test_functional.py | 6 +++--- version.i | 4 ++++ 6 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 geometricmodel.i diff --git a/csmapi.i b/csmapi.i index 1cec5ae..40812d3 100644 --- a/csmapi.i +++ b/csmapi.i @@ -4,6 +4,7 @@ %include "ellipsoid.i" %include "warning.i" %include "isd.i" +%include "model.i" +%include "geometricmodel.i" %include "rastergm.i" %include "plugin.i" -%include "model.i" \ No newline at end of file diff --git a/geometricmodel.i b/geometricmodel.i new file mode 100644 index 0000000..37f4e3f --- /dev/null +++ b/geometricmodel.i @@ -0,0 +1,7 @@ +%module(package="csmapi") geometricmodel +%{ + #include "GeometricModel.h" +%} + +%import model.i +%include GeometricModel.h diff --git a/plugin.i b/plugin.i index 590fe17..c429c2e 100644 --- a/plugin.i +++ b/plugin.i @@ -1,16 +1,17 @@ %module(package="csmapi") plugin %{ #include "Plugin.h" + %} %include <std_string.i> %include <std_list.i> -%include typemaps.i -%include Plugin.h - +%include Model.h +%apply SWIGTYPE *DYNAMIC { csm::Model * }; +%include Plugin.h %template(PluginList) std::list<const csm::Plugin*>; %{ @@ -27,3 +28,19 @@ %} +// A general purpose function for dynamic casting of a Model * +%{ +static swig_type_info * +Model_dynamic(void **ptr) { + csm::RasterGM *b; + b = dynamic_cast<csm::RasterGM *>((csm::Model *) *ptr); + if (b) { + *ptr = (void *) b; + return SWIGTYPE_p_csm__RasterGM; + } + return 0; +} +%} + +// Register the above casting function +DYNAMIC_CAST(SWIGTYPE_p_csm__Model, Model_dynamic); diff --git a/rastergm.i b/rastergm.i index 64b658f..bb121a5 100644 --- a/rastergm.i +++ b/rastergm.i @@ -5,4 +5,6 @@ %ignore CSM_RASTER_FAMILY; -%include RasterGM.h \ No newline at end of file +%import model.i +%import geometricmodel.i +%include RasterGM.h diff --git a/tests/test_functional.py b/tests/test_functional.py index 0746b1f..e294b7f 100644 --- a/tests/test_functional.py +++ b/tests/test_functional.py @@ -43,6 +43,6 @@ def test_isd_to_model_to_ground(isd, plugin): model = plugin.constructModelFromISD(isd, model_name) assert model.getVersion().version() == '0.1.0' - print(dir(model)) - assert False - \ No newline at end of file + image_coord = csmapi.ImageCoord(1,1) + assert hasattr(model, 'imageToGround') + diff --git a/version.i b/version.i index e775da1..f4cc5b1 100644 --- a/version.i +++ b/version.i @@ -4,4 +4,8 @@ %} %include <std_string.i> + +%rename ("$ignore", fullname=1) csm::Version::print; %include "Version.h" + + -- GitLab