Skip to content
Snippets Groups Projects
Select Git revision
  • 64307689dcf3e4b84be51d9fe0ed1081736b171a
  • main default protected
  • 1.0.2
  • 1.0.1
  • 1.0.0
5 results

plugin.i

Blame
  • plugin.i 1.00 KiB
    %module(package="csmapi") plugin
    %{
        #include "Plugin.h"
        typedef csm::Plugin Plugin;
    %}
    
    %include <std_string.i>
    %include <std_list.i>
    %include Model.h
    
    %apply SWIGTYPE *DYNAMIC { csm::Model * };
    
    %include Plugin.h
    typedef csm::Plugin Plugin;
    // Returns a list of pointer to pointers (which is necessary because the 
    // plugin is an abstract base class...)
    %template(PluginList) std::list<const csm::Plugin*>;
    %{
        namespace swig {
        template <> struct traits<csm::Plugin>
        {
            typedef pointer_category category;
            static const char* type_name()
            {
                return "Plugin";
            }
        };
        }
    %}
    
    // 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);