Advertisement
C4Cypher

lua_interface.m

Aug 4th, 2014
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 4.86 KB | None | 0 0
  1. :- interface.
  2.  
  3. :- semipure pred is_number(lua_state_ptr::in, int::in) is semidet.
  4. :- semipure pred is_nil(lua_state_ptr::in, int::in) is semidet.
  5. :- semipure pred is_userdata(lua_state_ptr::in, int::in) is semidet.
  6. :- semipure pred is_integer(lua_state_ptr::in, int::in) is semidet.
  7. :- semipure pred is_lightuserdata(lua_state_ptr::in, int::in) is semidet.
  8. :- semipure pred is_string(lua_state_ptr::in, int::in) is semidet.
  9. :- semipure pred is_boolean(lua_state_ptr::in, int::in) is semidet.
  10. :- semipure pred is_thread(lua_state_ptr::in, int::in) is semidet.
  11.  
  12.  
  13. :- semipure pred pull_number(lua_state_ptr::in, float::out) is det.
  14. :- semipure pred pull_userdata(lua_state_ptr::in, T::out) is det.
  15. :- semipure pred pull_integer(lua_state_ptr::in, int::out) is det.
  16. :- semipure pred pull_lightuserdata(lua_state_ptr::in, c_pointer::out) is det.
  17. :- semipure pred pull_string(lua_state_ptr::in, string::out) is det.
  18. :- semipure pred pull_boolean(lua_state_ptr::in, bool::out) is det.
  19. :- semipure pred pull_thread(lua_state_ptr::in, lua_state_ptr::out) is det.
  20.  
  21.  
  22. :- impure pred push_number(lua_state_ptr::in, float::in) is det.
  23. :- impure pred push_nil(lua_state_ptr::in) is det.
  24. :- impure pred push_userdata(lua_state_ptr::in, T::in) is det.
  25. :- impure pred push_integer(lua_state_ptr::in, int::in) is det.
  26. :- impure pred push_lightuserdata(lua_state_ptr::in, c_pointer::in) is det.
  27. :- impure pred push_string(lua_state_ptr::in, string::in) is det.
  28. :- impure pred push_boolean(lua_state_ptr::in, bool::in) is det.
  29. :- impure pred push_thread(lua_state_ptr::in, lua_state_ptr::in) is det.
  30.  
  31.  
  32. :- implementation.
  33.  
  34.  
  35. :- pragma foreign_proc("C", is_number(L::in, Index::in),
  36.  [promise_semipure, will_not_call_mercury],
  37. "
  38.      SUCCESS_INDICATOR = lua_isnumber(L, Index);
  39. ").
  40.  
  41. :- pragma foreign_proc("C", is_nil(L::in, Index::in),
  42.  [promise_semipure, will_not_call_mercury],
  43. "
  44.      SUCCESS_INDICATOR = lua_isnil(L, Index);
  45. ").
  46.  
  47. :- pragma foreign_proc("C", is_userdata(L::in, Index::in),
  48.  [promise_semipure, will_not_call_mercury],
  49. "
  50.      SUCCESS_INDICATOR = lua_isuserdata(L, Index);
  51. ").
  52.  
  53. :- pragma foreign_proc("C", is_integer(L::in, Index::in),
  54.  [promise_semipure, will_not_call_mercury],
  55. "
  56.      SUCCESS_INDICATOR = lua_isinteger(L, Index);
  57. ").
  58.  
  59. :- pragma foreign_proc("C", is_lightuserdata(L::in, Index::in),
  60.  [promise_semipure, will_not_call_mercury],
  61. "
  62.      SUCCESS_INDICATOR = lua_islightuserdata(L, Index);
  63. ").
  64.  
  65. :- pragma foreign_proc("C", is_string(L::in, Index::in),
  66.  [promise_semipure, will_not_call_mercury],
  67. "
  68.      SUCCESS_INDICATOR = lua_isstring(L, Index);
  69. ").
  70.  
  71. :- pragma foreign_proc("C", is_boolean(L::in, Index::in),
  72.  [promise_semipure, will_not_call_mercury],
  73. "
  74.      SUCCESS_INDICATOR = lua_isboolean(L, Index);
  75. ").
  76.  
  77. :- pragma foreign_proc("C", is_thread(L::in, Index::in),
  78.  [promise_semipure, will_not_call_mercury],
  79. "
  80.      SUCCESS_INDICATOR = lua_isthread(L, Index);
  81. ").
  82.  
  83.  
  84. :- pragma foreign_proc("C", pull_number(L::in, Index::in, V::out),
  85.  [promise_semipure, will_not_call_mercury],
  86. "
  87.      V = lua_tonumber(L, Index);
  88. ").
  89.  
  90. :- pragma foreign_proc("C", pull_userdata(L::in, Index::in, V::out),
  91.  [promise_semipure, will_not_call_mercury],
  92. "
  93.      V = lua_touserdata(L, Index);
  94. ").
  95.  
  96. :- pragma foreign_proc("C", pull_integer(L::in, Index::in, V::out),
  97.  [promise_semipure, will_not_call_mercury],
  98. "
  99.      V = lua_tointeger(L, Index);
  100. ").
  101. :- pragma foreign_proc("C", pull_lightuserdata(L::in, Index::in, V::out),
  102.  [promise_semipure, will_not_call_mercury],
  103. "
  104.      V = lua_tolightuserdata(L, Index);
  105. ").
  106.  
  107. :- pragma foreign_proc("C", pull_string(L::in, Index::in, V::out),
  108.  [promise_semipure, will_not_call_mercury],
  109. "
  110.      V = lua_tostring(L, Index);
  111. ").
  112.  
  113. :- pragma foreign_proc("C", pull_boolean(L::in, Index::in, V::out),
  114.  [promise_semipure, will_not_call_mercury],
  115. "
  116.      V = lua_toboolean(L, Index);
  117. ").
  118.  
  119. :- pragma foreign_proc("C", pull_thread(L::in, Index::in, V::out),
  120.  [promise_semipure, will_not_call_mercury],
  121. "
  122.      V = lua_tothread(L, Index);
  123. ").
  124.  
  125. :- pragma foreign_proc("C", push_number(L::in, V::in),
  126. [will_not_call_mercury],
  127. "
  128.      lua_pushnumber(L, V);
  129. ").
  130.  
  131. :- pragma foreign_proc("C", push_nil(L::in),
  132. [will_not_call_mercury],
  133. "
  134.      lua_pushnil(L);
  135. ").
  136.  
  137. :- pragma foreign_proc("C", push_userdata(L::in, V::in),
  138. [will_not_call_mercury],
  139. "
  140.      lua_pushuserdata(L, V);
  141. ").
  142.  
  143. :- pragma foreign_proc("C", push_integer(L::in, V::in),
  144. [will_not_call_mercury],
  145. "
  146.      lua_pushinteger(L, V);
  147. ").
  148.  
  149. :- pragma foreign_proc("C", push_lightuserdata(L::in, V::in),
  150. [will_not_call_mercury],
  151. "
  152.      lua_pushlightuserdata(L, V);
  153. ").
  154.  
  155. :- pragma foreign_proc("C", push_string(L::in, V::in),
  156. [will_not_call_mercury],
  157. "
  158.      lua_pushstring(L, V);
  159. ").
  160.  
  161. :- pragma foreign_proc("C", push_boolean(L::in, V::in),
  162. [will_not_call_mercury],
  163. "
  164.      lua_pushboolean(L, V);
  165. ").
  166.  
  167. :- pragma foreign_proc("C", push_thread(L::in, V::in),
  168. [will_not_call_mercury],
  169. "
  170.      lua_pushthread(L, V);
  171. ").
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement