SWIG:从另一个模块返回对象的函数
SWIG: function returning an object from another module
我想知道是否可以使用 SWIG 混合来自两个模块的对象,例如模块 A 的函数是否可以 return 模块 B 的对象?
我的用例如下:
class_a.hpp:
class ClassA
{
public:
const OGRPolygon& get_geom() const;
void set_geom(OGRPolygon* geom);
protected:
OGRPolygon* _footprint;
};
class_a.cpp:
const OGRPolygon& ForCity::SPreC_cpp::ClassA::get_geom() const
{
return *(this->_footprint);
}
void ForCity::SPreC_cpp::ClassA::set_geom(OGRPolygon* geom)
{
this->_footprint = geom;
}
test.i:
%module test
%include "class_A.hpp"
然后在 Python,我希望能够做类似的事情:
A = test.ClassA()
G = ogr.Geometry(ogr.wkbLinearRing)
# filling the geometry...
A.set_geom(G) # set the geometry of A
A.get_geom().GetArea() # use the geometry of A as a usual OGR geometry
请问可以吗?如何操作?
这可以通过在 .i
文件中包含 %import ClassB
指令来实现。该指令读取类型信息但不生成绑定。
我想知道是否可以使用 SWIG 混合来自两个模块的对象,例如模块 A 的函数是否可以 return 模块 B 的对象?
我的用例如下:
class_a.hpp:
class ClassA
{
public:
const OGRPolygon& get_geom() const;
void set_geom(OGRPolygon* geom);
protected:
OGRPolygon* _footprint;
};
class_a.cpp:
const OGRPolygon& ForCity::SPreC_cpp::ClassA::get_geom() const
{
return *(this->_footprint);
}
void ForCity::SPreC_cpp::ClassA::set_geom(OGRPolygon* geom)
{
this->_footprint = geom;
}
test.i:
%module test
%include "class_A.hpp"
然后在 Python,我希望能够做类似的事情:
A = test.ClassA()
G = ogr.Geometry(ogr.wkbLinearRing)
# filling the geometry...
A.set_geom(G) # set the geometry of A
A.get_geom().GetArea() # use the geometry of A as a usual OGR geometry
请问可以吗?如何操作?
这可以通过在 .i
文件中包含 %import ClassB
指令来实现。该指令读取类型信息但不生成绑定。