⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lua_misc.c

📁 lua脚本语言调用allegro游戏程序库的接口-跨平台
💻 C
字号:
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
//#include <lstate.h>

#include "lua_misc.h"


//-----------------------------------------------------------------------------------------------
static int l_bit_and (lua_State *L) 
{
   int a,b,result;
   
   a=(int) lua_tonumber(L,1);
   b=(int) lua_tonumber(L,2);
   result= a&b;

   lua_pushnumber(L, result);

   return 1;  /* number of results */
}

//-----------------------------------------------------------------------------------------------
static int l_bit_or (lua_State *L) 
{
   int a,b,result;
   
   a=(int) lua_tonumber(L,1);
   b=(int) lua_tonumber(L,2);
   result= a|b;

   lua_pushnumber(L, result);

   return 1;  /* number of results */
}

//-----------------------------------------------------------------------------------------------
static int l_bit_xor (lua_State *L) 
{
   int a,b,result;
   
   a=(int) lua_tonumber(L,1);
   b=(int) lua_tonumber(L,2);
   result= a^b;

   lua_pushnumber(L, result);

   return 1;  /* number of results */
}


//-----------------------------------------------------------------------------------------------
static int l_getbyte(lua_State *L) 
{
   int a,b,result;
   
   a=(int) lua_tonumber(L,1);
   b=(int) lua_tonumber(L,2);
   
   switch(b)
      {
      case 1:  result =      a  & 0xFF;  break;
      case 2:  result =  (a>>8) & 0xFF;  break;
      case 3:  result = (a>>16) & 0xFF;  break;
      case 4:  result = (a>>24) & 0xFF;  break;
      default: result =      a  & 0xFF;  break;
      }

   lua_pushnumber(L, result);

   return 1;  /* number of results */
}

//-----------------------------------------------------------------------------------------------
static int l_getword(lua_State *L) 
{
   int a,b,result;
   
   a=(int) lua_tonumber(L,1);
   b=(int) lua_tonumber(L,2);
   
   switch(b)
      {
      case 1:  result =       a  & 0xFFFF;  break;
      case 2:  result =  (a>>16) & 0xFFFF;  break;
      default: result =       a  & 0xFFFF;  break;
      }

   lua_pushnumber(L, result);

   return 1;  /* number of results */
}


//-----------------------------------------------------------------------------------------------
static const struct luaL_reg misc_lib [] = {
      {"bit_and",       l_bit_and},
      {"bit_or",        l_bit_or},
      {"bit_xor",       l_bit_xor},
      {"getbyte",       l_getbyte},
      {"getword",       l_getword},
      {NULL,            NULL}  /* sentinel */
    };



//-----------------------------------------------------------------------------------------------
int luaopen_misc (lua_State *L) 
{
   luaL_openlib(L, "misc", misc_lib, 0);
   return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -