Advertisement
C4Cypher

lua_interface.lua

Aug 4th, 2014
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.34 KB | None | 0 0
  1. -- lua_interface.lua
  2.  
  3. local proc = "foreign_proc"
  4.  
  5. local types = {
  6.     ["nil"] = "nil",
  7.     integer = "int",
  8.     number = "float",
  9.     boolean = "bool",
  10.     string = "string",
  11.     thread = "lua_state_ptr",
  12.     lightuserdata = "c_pointer",
  13.     userdata = "T"
  14. }
  15.  
  16. print ":- interface.\n\n"
  17.  
  18. for k,v in pairs(types) do
  19.     print(":- semipure pred is_"..k..
  20.     "(lua_state_ptr::in, int::in) is semidet.")
  21. end
  22.  
  23. print "\n"
  24.  
  25. for k,v in pairs(types) do
  26.     print(":- semipure pred pull_"..k.."(lua_state_ptr::in, "..v..
  27.         "::out) is det.")
  28. end
  29.  
  30. print "\n"
  31.  
  32. for k,v in pairs(types) do
  33.     print(":- impure pred push_"..k.."(lua_state_ptr::in, "..v..
  34.         "::in) is det.")
  35. end
  36.  
  37. print "\n"
  38.  
  39. print ":- implementation.\n\n"
  40.  
  41.  
  42. for k,v in pairs(types) do
  43.     print(":- pragma foreign_proc(\"C\", is_"..k..
  44.     "\t(L::in, Index::in),\n [promise_semipure, will_not_call_mercury],\n"..
  45. "\"\n\t SUCCESS_INDICATOR = lua_is"..k.."(L, Index);\n\").")
  46. end
  47.  
  48. print "\n"
  49.  
  50. for k,v in pairs(types) do
  51.     print(":- pragma foreign_proc(\"C\", pull_"..k.."(L::in, Index::in, "..
  52.     "V::out),\n [promise_semipure, will_not_call_mercury],\n"..
  53. "\"\n\t V = lua_to"..k.."(L, Index);\n\").")
  54. end
  55.  
  56. for k,v in pairs(types) do
  57.     print(":- pragma foreign_proc(\"C\", push_"..k.."(L::in, V::in),\n"..
  58.      "[will_not_call_mercury],\n"..
  59. "\"\n\t lua_push"..k.."(L, V);\n\").")
  60. end
  61.  
  62. print "\n"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement