当前位置: 首页 > news >正文

山东济南seo整站优化费用传媒公司网站

山东济南seo整站优化费用,传媒公司网站,asp.net网站安装顺序,wordpress怎样连接数据库编译环境#xff1a;Ubuntu16.04 64位 交叉编译工具#xff1a;arm-hisiv500-linux-gcc 文章目录 1. 项目背景2. lua开源版本选择3. 封装代码3.1 源码简介3.2 封装类3.2.1 头文件3.2.2 类的实现3.3.3 sample代码 1. 项目背景 使用lua脚本#xff0c;读取key对应的值#x… 编译环境Ubuntu16.04 64位 交叉编译工具arm-hisiv500-linux-gcc 文章目录 1. 项目背景2. lua开源版本选择3. 封装代码3.1 源码简介3.2 封装类3.2.1 头文件3.2.2 类的实现3.3.3 sample代码 1. 项目背景 使用lua脚本读取key对应的值用作设备的默认配置。 2. lua开源版本选择 使用lua-5.4.6.tar.gz点击下载早期使用lua-5.0.2.tar.gz在部分平台上存在浮点运算错误的问题放弃。 3. 封装代码 3.1 源码简介 源码的目录结构比较简单只有一个src目录Makefile略作修改即可或者根据自己项目做简化。 lua.hpp文件内容如下外部调用主要用到就是这三个头文件在编译C工程时注意extern “C” // lua.hpp // Lua header files for C // extern C not supplied automatically because Lua also compiles as Cextern C { #include lua.h #include lualib.h #include lauxlib.h } 3.2 封装类 3.2.1 头文件 #ifndef __LUA_CONFIG_H__ #define __LUA_CONFIG_H__#include string #include pthread.hstruct lua_State; typedef struct lua_State lua_State;class LuaConfig { public:static int Initialize(void);static int Invalidate(void);static LuaConfig* instance(void); private:static LuaConfig* s_instance;LuaConfig(void);virtual ~LuaConfig(void);LuaConfig(LuaConfig ); // 拷贝构造函数禁止拷贝public:int Init(const char * filename);//要解析的lua文件可以按照lua语法包含其他luavoid unInit();/// 根据传入的键值返回相应的字符串/// key为要访问的键值/// defaultValue为默认值当访问的键值不存在时返回std::string getString(const char * key, const char * defaultValue);/// 根据传入的键值返回相应的double值,与getString类似/// key为要访问的键值/// defaultValue为默认值当访问的键值不存在时返回double getNumber(const char * key, double defaultValue 0);private:int TravelTable(const char * key);private:lua_State *m_luastate;pthread_mutex_t m_Mutex; };#endif //__LUA_CONFIG_H__ 3.2.2 类的实现 #include LuaConfig.h #include string.h #include stdlib.hextern C {#include lua/lua.h#include lua/lauxlib.h#include lua/lualib.h };int LuaConfig::Initialize(void) {if(s_instance ! NULL)return -1;s_instance new LuaConfig;return 0; } int LuaConfig::Invalidate(void) {if(s_instance NULL)return 0;delete s_instance;return 0; } LuaConfig* LuaConfig::instance(void) {return s_instance; }LuaConfig* LuaConfig::s_instance NULL;LuaConfig::LuaConfig() {m_luastate NULL;pthread_mutex_init(m_Mutex, NULL); }LuaConfig::~LuaConfig() {unInit();pthread_mutex_destroy(m_Mutex); }int LuaConfig::Init(const char * filename) {if (m_luastate ! NULL)return -1;if (filename NULL)return -2; #if 0 // 5.0.2的封装m_luastate lua_open();if (m_luastate NULL)return -3;luaopen_base(m_luastate);luaopen_table(m_luastate);luaopen_io(m_luastate);luaopen_string(m_luastate);luaopen_math(m_luastate);luaopen_debug(m_luastate);//luaopen_lfs(m_luastate);//luaopen_bitlib(m_luastate);if (lua_dofile(m_luastate, filename) ! 0)return -4; #else//5.4.6m_luastate luaL_newstate();if (m_luastate NULL)return -3;luaL_openlibs(m_luastate);if (luaL_dofile(m_luastate, filename) ! 0)return -4; #endifreturn 0; }void LuaConfig::unInit() {if (m_luastate ! NULL){lua_close(m_luastate);m_luastate NULL;}return; }std::string LuaConfig::getString(const char * key, const char * defaultValue) {pthread_mutex_lock(m_Mutex);int nTop lua_gettop(m_luastate);int status TravelTable(key);std::string ret defaultValue;if( (status 0) (lua_isstring(m_luastate, -1))){ret lua_tostring(m_luastate, -1);}lua_settop(m_luastate, nTop);pthread_mutex_unlock(m_Mutex);return ret; }double LuaConfig::getNumber(const char * key, double defaultValue) {pthread_mutex_lock(m_Mutex);int nTop lua_gettop(m_luastate);int status TravelTable(key);double ret defaultValue;if( (status 0) (lua_isnumber(m_luastate, -1))){ret lua_tonumber(m_luastate, -1);}lua_settop(m_luastate, nTop);pthread_mutex_unlock(m_Mutex);return ret; }int LuaConfig::TravelTable(const char * key) {// 创建匿名函数int len strlen(key) 16;char* szFunc (char*)malloc(len);memset(szFunc, 0, len);sprintf(szFunc, return %s, key);int status luaL_loadbuffer(m_luastate, szFunc, strlen(szFunc), table_travel);if(status 0){status lua_pcall(m_luastate, 0, LUA_MULTRET, 0);}free(szFunc);return status; } 3.3.3 sample代码 LuaConfig::Initialize(); LuaConfig* pCfg LuaConfig::instance(); pCfg-Init(./test.lua);int testA (int)LuaConfig::instance()-getNumber(testA, 0); std::string testB LuaConfig::instance()-getString(testB, 123456);if (pCfg ! NULL) {pCfg-unInit();LuaConfig::Invalidate(); } 以上。 转载请注明出处如有错漏之处敬请指正。
http://wiki.neutronadmin.com/news/207443/

相关文章:

  • jsp网站开发分享网站招聘网站开发的流程
  • 品牌运营策略有哪些漳州seo网站快速排名
  • 郑州新密网站建设网站的售后服务
  • 自由空间网站建设寓意好有内涵的公司名字
  • 网站设计风格怎么写株洲网站建设兼职
  • 短视频网站php源码免费匀贵网站建设
  • 免费行情网站下载大全羽毛球赛事级别分类
  • 杭州网站设计渠道wordpress 添加模板
  • 在线代理的网站上海做宴会的网站
  • 网站微信支付申请流程网站可以做视频链接
  • 网站开发交易平台Dw怎么做网站往里面加标题和字
  • 舆情网站企业展厅策划设计公司排名
  • 摄影师做展示的网站免费简约ppt模板
  • 自助模块化网站建设招商加盟网
  • 南昌网站建设好企业网站网站建设 步骤
  • 为什么无法登录建设银行网站软件开发工具也称为什么工具
  • 相亲网站做期货现货贵金属的人php网站开发难吗
  • 长沙3合1网站建设电话wordpress设置树形
  • 创建门户网站网站轮播图制作
  • 做视频可以领钱的网站专业建站哪家好
  • 一般做网站怎样做简单公司网站
  • 网站开发支付功能怎么做引流推广公司
  • 咨询公司网站设计创建国际网站
  • 养老院网站建设方案合肥需要做网站的公司
  • 福田网站设计处理珲春网站建设
  • 公司网站做论坛怎么做网页app
  • 怎么查找网站死链芜湖建设机械网站
  • 怎样发掘网站建设的客户电子商务网站的开发方式有哪三种
  • 新农村建设 网站seo服务外包
  • 做网站第一步设计logo图片