关于squirrel语言与C++的自动绑定问题(2)

本文介绍了一种实现C++类自动绑定到Squirrel脚本语言的方法,通过SqModuleBase和SqModule模板类,详细展示了如何创建、使用和管理C++对象在Squirrel中的表示。SqModuleBase提供了获取对象、释放对象等基础操作,而SqModule则用于创建特定C++类的Squirrel封装,提供如构造、创建、使用对象等函数。
摘要由CSDN通过智能技术生成

实现C++类自动绑定到Squirrel的核心类我是这样写的:

template<class T>struct SqModuleBase
{
    struct BaseT
    {
        T* pObject;
        bool flag_created;
        
    };
    
    static T* getHandle(HSQUIRRELVM v)
    {
        BaseT* handle;
        if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)(&handle),0))) return NULL;
        return handle->pObject;
    }

    static int _sq_get(HSQUIRRELVM v,const SQChar* &var,BaseT* &handle)
    {
        if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)(&handle),0)) || handle==NULL)
            return 0;//表示获取对象失败,立即返回
        if(SqGetVar(v,var))
        {
            if(strcmp(var,"this")==0)
            {
                sq_pushuserpointer(v,(SQUserPointer)handle->pObject);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值