关于squirrel语言与C++的自动绑定问题(1)
来源:互联网 发布:多宝视训练软件价格 编辑:程序博客网 时间:2024/05/01 02:25
我写过一个库,用于将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:
vector<GEO> expand(double dist); //多边形或者线段缩放指定的距离,单位为米,正为扩大,负为缩小
bool insert(GEO* pt);
bool append(const char* pS);
int in_bar(GEO* pt,double width) ;//航段匹配,返回0标示不在航线内,返回正数表示过点(1为起始点),返回负数表示过航段(-1为起始点)
bool in_polygon;(GEO* pt) /// 判断点在多边形内所谓多边形,这里必须定义超过3点以上才可以
bool in_area(GEO* pt);
};
问题不好解决,但并不是不能解决,squirrel语言毕竟支持C指针,而且也支持“类”,我设想为每个需要使用的C++类在squirrel语言中设定一个类名,而且将这个脚本语言的对象填写为一个C++对象的指针,在脚本语言中也就是这样。
local aa=APW_area(); //创建一个C++对象的指针,此时对象没有构造,aa包含的值还是一个空指针
aa.create(); //创建这个C++对象,此时应该申请该对象的内存并执行C++对象的构造
aa.append("201212N11211212E"); //执行C++对象的方法
这样看上去是不是很好,我们几乎可以直接使用C++类了,这可以重用很多C++库,再通过脚本语言的高效开发快速写代码。
- 关于squirrel语言与C++的自动绑定问题(1)
- 关于squirrel语言与C++的自动绑定问题(2)
- 关于语言的前期绑定与后期绑定
- Squirrel语言的执行速度
- 关于@Autowired自动绑定问题
- 关于c语言中自动变量(局部自动变量)的空间的分配的问题
- 关于squirrel的那些事
- 关于C语言中*与++的组合问题解析
- 关于C语言的问题
- 关于c语言的问题
- C语言关于++--的问题
- 关于C语言的问题
- SQUIRREL语言
- 关于SpringMvc自动绑定json参数的问题
- C语言自动变量的潜在问题
- 关于C语言运算的自动提权及类型转换的问题
- 关于xshell自动ctrl+c的问题
- SQUIRREL语言学习笔记(一)
- ListView追加/参照/削除(C#/VB.NET)
- caffe for windows 下使用caffemodel 实现cifar10的图像分类
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表[数据结构]
- java 抽象类和接口区别
- 重载函数2
- 关于squirrel语言与C++的自动绑定问题(1)
- 第一行代码-7.1 内容提供器简介
- Yii2视图中的context
- sqoop 导入数据的时候出现Unsupported major.minor version 52.0的问题描述
- 最新获取iOS设备的型号
- Android照相和录音功能的使用
- web与Navtive 交互—iOS
- 蟠桃记
- html5篇——新增文档标签