• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua调用C函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
#include "tolua_fix.h"
#include "WordFilter.h"
#include "LuaBasicConversions.h"
#include "lua_sensitive_binding.h"

int lua_sensitive_loadfile(lua_State* tolua_S)
{
    size_t sz = 0;
    const char *filePath = luaL_checklstring(tolua_S, 1, &sz);
    std::thread  threadLoadFile(&CWordFilter::loadFileByThread, CWordFilter::getInstance(), filePath);
    threadLoadFile.detach();
    return 1;
}

int censorStr(lua_State *tolua_S)
{
    size_t sz = 0;
    std::string source = luaL_checklstring(tolua_S, 1, &sz);
    if (CWordFilter::getInstance()->censorStr(source))
    {
        return 0;
    }
    else if (CWordFilter::getInstance()->censorStrWithOutSymbol(source))
    {
        return 0;
    }
    return 1;
}

static luaL_Reg lua_sensitive_funcs[] = {
    { "loadFile", lua_sensitive_loadfile },
    { "censorStr", censorStr },
    { NULL, NULL }
};



int init_sensitive_binding(lua_State* tolua_S){
    lua_newtable(tolua_S);
    lua_pushvalue(tolua_S, -1);
    lua_setfield(tolua_S, LUA_GLOBALSINDEX, "SensitiveChecker");

    luaL_Reg* lib = lua_sensitive_funcs;
    for (; lib->func; lib++)
    {
        lua_pushcfunction(tolua_S, lib->func);
        lua_setfield(tolua_S, -2, lib->name);
    }
    lua_pop(tolua_S, 1);

    return 1;
}

int register_sensitive_binding(lua_State* tolua_S)
{
    return init_sensitive_binding(tolua_S);
}

将需要用的函数插入到 名字为 SensitiveChecker 的全局变量表中, 这里我加入了两个函数。用于之前的敏感词屏蔽操作,因为只需要用到这两个接口,所以没有必要去把一个类添加到项目中去,为了省事就加了个全局的表


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#迭代语句发布时间:2022-07-13
下一篇:
c#解决高并发--加锁(Lock)发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap