lua 调用C函数

#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 的全局变量表中, 这里我加入了两个函数。用于之前的敏感词屏蔽操作,因为只需要用到这两个接口,所以没有必要去把一个类添加到项目中去,为了省事就加了个全局的表

转载于:https://www.cnblogs.com/kpxy/p/11266666.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值