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

  • 相关阅读:
    this和$(this)的关系
    单色边表格
    php概率算法
    jQuery Ajax 参数解析
    拍拍CPS入门使用
    飞鸽端口被占
    浏览器调试工具技巧分享
    事件click,bind,click
    jQuery旋转插件—rotate
    利用谷歌API生成二维码
  • 原文地址:https://www.cnblogs.com/kpxy/p/11266666.html
Copyright © 2020-2023  润新知