我写过一个库,用于将C++的对象自动绑定到squirrel语言中,自己觉得比以前公开的那些库要更方便一些,所以决定写这个文章
squirrel语言我就不说了,lua的改进型,小众但有效,如何将一个C++类绑定到squirrel语言,让squirrel得到快速扩展是一个问题,我们不想为每个C++类函数专门写一个接口函数,那么利用模板和宏是否可以自动做到这一点呢?
考察一个一般的C++类,可以发现引用了有很多C++类(例如Point,LineSegment,GEO等),这些类都是我们自己定义的,它们被作为数据记录,作为参数....,对于squirrel语言来说,这就悲剧了,它是无类型(弱类型)的脚本语言,如何在不了解这些C++类型结构的情况下自动处理这么多的C++类型。
class APW_area //进行告警区计算的对象
{
private:
double det3(double *a) ;//三阶行列式计算
double Multiply(Point p1, Point p2, Point p0) ; // 计算叉乘 |P1P0| × |P2P0|
bool IsOnline(Point point, LineSegment line); // 判断线段是否包含点point
bool Intersect(LineSegment L1, LineSegment L2); // 判断线段相交
string name;
GEO centre;
double HLevel,LLevel; //多边形区的上下高度界限,这里以米为单位
vector<Point> polygon;
public: